1、库函数——创建和打开
FILE *fopen(const char* filename, const char* mode)
filename:创建或者打开的文件名(包括路径)
mode:打开模式
所需库:<stdio.h>
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
2、库函数——读
函数原型
原型:
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
功能:
从缓冲区ptr所指的数组中把n个字段写到stream指向的文件中,每个字段长为size个字节,返回实际写入的字段数。
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
4、库函数——读字符
int fgetc(FILE *stream)
原型:
从stream指定的文件中读取一个字符。读取一个字节后,光标位置后移一个字节。
5、库函数——写字符
int fputc(int c, FILE *stream)
向stream指定的文件中写入一个字符c。在正常调用情况下,函数返回读取字符的ASCII码值,出错时,返回EOF(-1)。当正确写入一个字符或一个字节的数据后,文件内部写指针会自动后移一个字节的位置。EOF是在头文件 stdio.h中定义的宏。
6、库函数——格式化读
fscanf(FILE *stream, char *format[, argument……])
从一个流中进行格式化输入。fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束
。
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i;
printf("Input an integer:");
if( fscanf(stdin, "%d" , &i) )
{
printf("The integer read was:%i\n", i);
}
return 0;
}
补充:
FILE *stdin; //标准输入设备文件(键盘)
FILE *stdout; //标准输出设备文件(显示器)
FILE *stderr; //标准错误输出设备文件(显示器)
#include <stdio.h>
//每一个进程都默认的打开这三个文件:
int main()
{
fprintf(stdout,"%s","hello world!\n");//此句同2句是一样的。
//printf("%s","hello world!\n");
fprintf(stderr,"%s","hello world!\n");
int x;
fscanf(stdin,"%d",&x);//此句同下句是一样的。
scanf("%d",&x);
/* stdout和stderr的区别:
1.stdout有输出缓冲区,stderr没有输出缓冲区。
2.stdout可以重定向,stderr没有重定向(也就是stdout可以把输出结果送到其它地方,stderr不可以);
3.什么时候stdout会清空缓冲区:
当输出换行时、缓冲区满时、用fflush刷新时、等待用户输入时、程序运行结束时,当缓冲区清空时,缓冲区的内容会送到显示器*/
return 0;
}
7、库函数——格式化写
int fprintf(FILE *stream, char format[,argument,……])
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件。 fprintf()只能和printf()一样工作。 fprintf()的返回值是输出的字符数,发生错误时返回一个负值。
#include <stdio.h>
#include <process.h>
FILE *stream;
int main( void )
{
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
stream = fopen( "fprintf.out", "w" );
fprintf( stream, "%s%c", s, c );
fprintf( stream, "%d\n", i );
fprintf( stream, "%f\n", fp );
fclose( stream );
system( "type fprintf.out" );
return 0;
}
屏幕输出:
this is a string
10
1.500000
8、库函数——定位
int fseek(FILE *stream,long offset ,int whence)
char* getcwd(char* buf, size_t size)
功 能:获取当前工作目录
作用:把当前目录的绝对路径保存到 buf 中,buf 的大小为 size。如果 size太小无法保存该地址,返回 -1 并设置 errno 为 ERANGE。可以采取令 buf 为 NULL并使 size 为负值来使 getcwd 调用 malloc 动态给 buf 分配,但是这种情况要特别注意使用后释放缓冲以防止内存泄漏。
#include <unistd.h>
int main( void )
{
char buf[80];
getcwd(buf, sizeof(buf));
printf("current working directory:%s\n",buf);
return 0;
}
10、创建目录
#include <sys/stat.h>
int mkdir(char* dir,int mode)
功能:创建一个新目录。
返回值:0表示成功,-1表示出错。