格式化读写文件
在学习C语言的终端IO操作时,我们可以调用scanf()函数从终端读取用户键盘的输入数据,调用printf()函数输出到终端显示。
那么,对于文件,C语言提供了fscanf()函数从文件提取格式化数据。调用fprintf()格式化数据输出到文件中。函数的定义如下:
int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
这两个函数的使用与scanf()、printf()函数类似,只是第一个参数是FILE*类型的文件指针,指向一个打开的文件。所以,fscanf()函数从文件指针stream指向的文件读取数据,fprintf()把数据格式化输出到文件指针stream指向的文件。
如下是一个程序测试例子:

程序运行结果如下:

可以看到,程序打开test.txt文件,然后,格式化数据,写入到文件中。所以,可以查看test.txt文件的内容,如下:

然后,程序重新打开test.txt文件,调用fscanf()函数从文件中格式化提取数据,并存放到name, age, addr变量中。最终,输出变量的数据,就是test.txt文件中格式化存储的数据。
3.8 检测文件指针对象
C语言提供了feof()函数,用于判断文件指针是否已经到文件结尾。函数的定义如下:
int feof(FILE *stream);
函数说明:检测stream文件指针是否已经到文件结尾。如果已经到文件结尾,则返回1,否则,返回0。
如下是一个程序测试例子:

在编译运行程序之前,我们先给test.txt文件填充如下的数据:

此时,test.txt文件中有3行字符串。然后,编译运行程序如下:

可以看到,程序读取完test.txt文件中所有的数据。通过while()函数来循环读取,使用feof()函数来检测文件指针是否到了文件的末尾。如果还没有到文件末尾,继续读取文件。
当读取到文件的末尾时,结束循环读取文件的操作。