目录
1. 文件顺序读写
读:fgetc/fgets/fscanf/fread
写:fputc/fputs/fprintf/fwrite
2. 文件随机读写
fseek ftell rewind
3. 文件读取结束的判定
feof ferror
文件读写操作示意:
一、文件顺序读写
fgetc | int fgetc ( FILE * stream ) | 以字符为单位的读 |
fgets | char * fgets ( char * str, int num, FILE * stream ) | 一行一行的读 |
fscanf | int fscanf ( FILE * stream, const char * format, ... ) | 格式化的读 |
fread | size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ) | 二进制的读 |
fputc | int fputc ( int character, FILE * stream ) | 以字符为单位的写 |
fputs | int fputs ( const char * str, FILE * stream ) | 一行一行的写 |
fprintf | int fprintf ( FILE * stream, const char * format, ... ) | 格式化的写 |
fwrite | size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ) | 二进制的写 |
思考区别:
scanf/fscanf/sscanf
printf/fprintf/sprintf
scanf | 按照一定格式从键盘输入数据 |
fscanf | 按照一定格式从所有输入流输入数据 |
sscanf | 从字符串中按照一定格式读取出格式化的数据 |
printf | 按照一定格式把数据输出到屏幕上 |
fprintf | 按照一定格式向所有输出流输出数据 |
sprintf | 把格式化数据按照一定格式转换成字符串 |
二、文件的随机读写
根据文件指针的位置和偏移量来定位文件指针
stream 文件指针
offset 二进制文件:以字节为单位,距离origin的大小
文本文件: 0或ftell 返回的值
origin 起始位置选项
SEEK_SET | 文件开头 |
SEEK_CUR | 文件指针现有位置 |
SEEK_END | 文件结尾 |
对应位置可找到test.txt中已经写入
返回当前文件指针相对于起始位置的偏移量
不妨在上面的基础上进行ftell使用演示
在VS2019编译器下的结果,符合预期
将文件指针置为文件起始位置处
测试结果如下:
三、文件读取结束的判定
我们知道,如果程序在读取内容时结束,无外乎两种情况,读取失败结束或遇到文件尾结束。
而下面两个函数则是用来判断两种情况的发生的可能性(有果推因!!)
用于判断文件读取结束的时候是否为文件尾,是则返回非零值
用于判断文件读取结束的时候是否读取失败,是则返回非零值
示例演示: