(文件路径正斜杠反斜杠相关链接:https://blog.csdn.net/sszgg2006/article/details/8447176)
1 err = fopen_s(&fp, "E:\\ww.txt", "w");
或者
1 err = fopen_s(&fp, "E:\\ww.txt", "w+");
上述两条语句打开文件后文件内容自动清除,无论是否存在读/写文件操作,都会自动清除
fclose()函数
fclose(文件指针);
若文件关闭成功则返回0,否则返回非0
文件的读写
fread()函数
函数原型:unsigned int fread(void *buffer, unsigned int size, unsigned int count, FILE *fp);
函数功能:从fp所指的文件中读取数据块并存储到buffer所指向的内存中,buffer是待读入数据块存储的起始地址,size是每个数据块的大小(待读入的每个数据块的字节数),
count是最多允许读取的数据块个数(每个数据块size个字节),函数返回的是实际读到的数据块个数
fwrite()函数
函数原型:unsigned int fwrite(const void *buffer, unsigned int size, unsigned int count, FILE *fp);
函数功能:将buffer指向的内存中的数据块写入fp所指的文件,buffer是待输出数据块的起始地址,size是每个数据块的大小(待输出的每个数据块的字节数),
count是最多允许写入的数据块个数(每个数据块size个字节),函数返回的是实际写入的数据块个数
(tips:用户指定的内存块大小,最小为1字节,最大为整个文件)
fread()函数和fwrite()函数是按数据块的长度来处理输入/输出的,在用文本编辑器打开文本文件时可能因发生字符转换而出现莫名其妙的结果,所以这两个函数通常用于二进制文件的输入/输出
fscanf()函数
函数原型:int fscanf (FILE *fp, const char *format, ……);
fscanf(文件指针, 格式字符, 输入列表);
第一个参数为文件指针,第二个参数为格式控制符,第三个参数为地址参数表列,后两个参数与函数scanf()的参数相同
fprintf()函数
函数原型:int fprintf (FILE *fp, onst char *format, ……);
fprintf(文件指针, 格式字符, 输出列表);
第一个参数为文件指针,第二个参数为格式控制参数,第三个参数为输出参数列表,后两个参数和返回值与函数printf()相同
(用函数fscanf()和fprintf()进行文件的格式化读写,读写方便容易理解,但输入时要将ASCII字符转换成二进制数,输出时要将二进制数转换为ASCII字符,耗时较多)
fgets()函数
函数原型:char *fgets(char *s,int n,FILE *fp);
函数功能:该函数从fp所指的文件中读取字符串并在字符串末尾添加‘\0’,然后存入s,最多读n-1个字符,当读到回车换行符、到达文件尾或读满n-1个字符时,就停止读取
函数返回该字符串的首地址,即指针s的值,读取失败返回空指针NULL
(与gets()不同的是,fgets()从指定的流读取字符串,读到换行符时将换行符也作为字符串的一部分读到字符串中来)
fputs()函数
函数原型:fputs(_In_z_ const char * _Str, _Inout_ FILE * _File);
str是要输出的字符串,fp是文件指针,字符串末尾'\0'不输出
函数功能:将字符串输出到指针fp所指的文件中
(与puts()不同的是,fputs()不会在写入文件的字符串末尾加上换行符'\n')
fgetc()函数
函数原型:int fgetc (FILE *fp);