文件操作详解
1.什么是文件
文件可以做到数据的持久化
文件可以分为数据文件和程序文件,这个是按照功能划分的
文件名包括三个部分:文件路径+文件名主干+文件后缀
c:\code\test.txt
2. 文件的打开与关闭
函数用法来源:cplusplus.com
以下两种都可以成功打开文件!
方式1:
文件的相对路径,相对于这个文件的位置,如果是在同一级目录下,那么,可以只写文件名主干加后缀
问题:怎么查看文件的位置?
回答:
右击test.c之后点打开所在的文件夹
方式2:
文件的绝对路径,直接复制之后加上文件名主干加后缀
3. 文件的顺序读写
3.1 fputc和fgetc
字符输出函数,可用于写
字符输入函数,可用于读
代码举例:
3.2 fgets和fputs
文本行输入函数
fgets的第二个参数是5,指的是一行最大读取的是5个字符,最后一个是默认的\0
文本行输出函数
3.3 fprintf和fscanf
格式化输出函数
格式化输入函数
3.1 /3.2/ 3.3 这三组对于所有输入输出流都可以
3.4 fread和fwrite
只能针对文件
测试二进制的写函数
测试二进制的读函数
4.对比一组函数
scanf :从键盘上读取格式化的数据 stdin
printf :把数据写到输出屏幕上 stdout
fscanf:针对所有输入流的格式化的输入函数:stdin,打开的文件
fprintf:针对所有输出流的格式化的输出函数:stdout ,打开的文件
sscanf:从一个字符串中还原出一个格式化的数据
sprintf:把格式化的数据存放在(转化成)一个字符串中
5. 文件的随机读写
5.1 fseek
假设文件test.txt里的内容是zhangsan,那么刚开始的指针指向z,使用过fgetc之后,指针都会往后面走1位。
5.2 ftell
计算指针相对于第一个字符的偏移量
5.3 rewind
让指针回到第一个字符处
6. 文本文件和二进制文件
以1万为例讲解:
文本文件的形式:ASCII形式
二进制文件:
小端存储
十进制:10000
二进制:00000000 00000000 00100111 00010000
十六进制:2710
7. 文件读取结束的判定
被错误使用的feof
应用于当知道文件读取结束的时候,判断是读取失败结束还是遇到文件尾结束
文本文件读取是否结束,判断返回值是否为EOF(fgetc)或NULL(fgets)
二进制文件的读取结束判断,判断返回值是否小于实际要读的个数
8. 文件缓冲区
fflush和fclose都可以做到刷新缓冲区
因为有文件缓冲区的存在,所以C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件。