一、整体操作步骤
打开文件:fopen
eg:
FILE *fp = NULL ;
fp = fopen("a.txt","r"); //用只读"r"的方式打开a.txt
if(NULL == fp)
{
perror("fail to open");
return-1;
} //判断文件是否打开
读写文件:
fgetc/fputc :单个字符的输入输出,输入输出为ASCII码文件
fgets/fputs: 字符串的输入输出,输入输出为ASCII码文件
fread/fwrite 二进制数据的输入输出 ,输入输出为二进制文件/ASCII码文件
fscanf/fprintf:格式化字符串的输入输出,输入输出为ASCII码文件
关闭文件fclose
eg: fclose(fp);
二、fopen和fclose
fopen:
函数类型:FILE *fopen(const char *pathname, const char *mode);
eg : FILE *fp = NULL; //先定义
fp = fopen("a.txt","r");//再打开
pathname:打开文件的路径
mode:
"r" :只读
文件不存在报错,文件存在只读打开
"r+":读写
文件不存在报错,文件存在读写打开
"w" :只写
文件不存在创建,文件存在将文件清0,只写打开
"w+":写读
文件不存在创建 ,文件存在将文件清0,写读打开
"a" :追加只写
文件不存在创建,文件存在直接只写打开
"a+":追加读写
文件不存在创建 ,文件存在直接写读打开
功能:打开一个文件并于其建立流
返回值:成功返回FILE类型指针,失败返回NULL
fclose:
功能:关闭流
返回值:成功返回0,失败返回EOF(-1)
三、fputc和fgetc
fputc:
功能:将对应的字符写入流中
返回值:成功返回写入的ASCII码值,失败返回EOF
eg:

写入结果:

fgetc:
功能:从流中接收一个字符
返回值:成功返回读到字符的ASCII码值,失败或者读到文件末尾返回EOF
eg:


四、fputs和fgets
fputs:
功能:将对应的字符串写入流中(不包含'\0'字符)
返回值:成功返回非负数,失败返回EOF
eg:

写入结果:

fgets:
功能:从流中接收字符串
返回值:成功返回存放字符串空间的首地址,失败或者读到文件末尾返回NULL
eg:


五、fwrite和fread
fwrite:
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:向流中写入nmemb个对象,每个对象size个字节,写入数据存放在ptr指向的空间中
返回值:成功返回实际读到对象的个数,失败或者读到文件末尾返回0
eg:

写入结果:

fread:
函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中
返回值:从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中
eg:


六、fscanf和fprintf
fscanf:
功能:从流中接收格式化字符串
返回值:正常返回匹配到的输入控制符的个数,出错或读到文件末尾返回EOF
eg:

提前在文件中写入:a=100,b=200

接收结果:

fprintf:
功能:将格式化字符串写入流中
返回值:成功返回打印的字节数,失败返回负数
eg:

