文件
文件类型
文件一般有两种:程序文件、数据文件
程序文件:包含源程序文件(后缀为 .c),目标文件(windows环境后缀为 .obj),可执行程序(windows 环境后缀为 .exe);
数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,例如程序运行需要从中读取数据的文件,或者输出内容的文件。
文件名
一个文件需要有一个唯一的标识便于我们查找使用
文件名一般包含:文件路径+文件名+文件后缀
eg: c:\vs.code\code\wenjian.txt
C程序在启动的时候,由系统默认给我们打开三个文件:标准输入,标准输出,标准错误,对应的硬件设备依次是:键盘,显示器、显示器
对应FILE 分别叫做:stdin,stdout,stderr*
文件指针:
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
FILE*
fopen : 打开文件
FILE *fopen (const char *filename,const char *mode)
FILF *pf 文件指针变量
fclose : 关闭文件
fputs : 往文件中写入内容
fwrite — 写入(二进制形式写入)
wb ---- w : 写入 b :二进制形式
(fputs(“hello world \n”,stdout)); ----- 打印,不会因为特殊符号出现转义(输啥打印啥)
printf ----- 会因为特殊符号而进行转义后打印
文件操作:
FILE *fp=fopen(“log.txt”,“w”) ---- “w”表示清空式写入,先将文件清空后重新写入
FILE *fp=fopen(“log.txt”,“a”) ---- “a”追加写入
“b”---- 二进制
文件的顺序读写:
文件的随机读写:
ftell
返回文件相对于起始位置的偏移量
fseek
根据文件指针的位置和偏移量来定位文件指针
fseek(fp,0,SEEK_SET)---------从fp 文件起始位置开始读取
fseek(fp,0,SEEK_END); size=ftell(fp); 可以用来求fp 文件的大小
(偏移量:SEEK_SET 文件起始,SEEK_END文件结尾;从文件起始向后偏移,偏移量为正数,从文件结尾向前偏移,偏移量为负数)
rewind
将文件的读取位置恢复到最开始
文件结束判断-----feof (file end of file)
在文件读取过程中不能用feof 函数的返回值直接用来判断文件是否结束
文件结束:1. 判定文件读取结束 2. 判定结束原因
fgetc 判断是否为 EOF;
fgets判断返回值是否为NULL;
ferror 检测错误结果;
文本文件读取结束:EOF = -1 ; ctrl+z 文件输入退出
(详细文件操作也可参考本人码云:
https://gitee.com/Coderxingchild/test__-c/blob/master/file/file/test.cpp)
(说明:博客内容可能涉及部分个人理解看法,如有疑问可留言哦~)