内容正文:
第11章文件
第11章文件
文件概述
文件的打开与关闭
以一个字节为单位读写文件
使用文本文件
以存储单元为单位读写文件
标准设备文件
文件的随机读写
以字节为单位读写文件
这节课我们学习以字节为单位读写文件
3
fputc函数
库函数fputc用于将单个字符写入文件位置指针指向的位置,函数的首部为int fputc(int c, FILE *stream)。
fputc函数将整型变量c中的低8位写入stream指向的文件中。如果没有出现错误,返回无符号字符型写入数据的编码;否则,返回EOF。
使用fputc函数向文件中写入数据时,文件应以"w"模式打开。
库函数fputc用于将单个字符写入文件位置指针指向的位置,函数的首部为int fputc(int c, FILE *stream)。
fputc函数将整型变量c中的低8位写入stream指向的文件中。如果没有出现错误,返回无符号字符型写入数据的编码;否则,返回EOF。
使用fputc函数向文件中写入数据时,文件应以"w"模式打开。
4
例11-1 把用户输入的两行英语存入test.txt文件中。
程序中先使用库函数fopen在当前目录中新建了一个test.txt文件。
FILE型指针变量fp指向了文件test.txt。
文件创建成功之后,使用库函数fputc依次将用户输入的字符存入文件中。
程序运行结束后,可以用记事本程序打开当前目录中的test.txt文件查看用户的输入。
5
fgetc函数
库函数fgetc用于从文件位置指针指向的位置读取一个字符,函数的首部为int fgetc(FILE *stream)。
fgetc函数从stream指向的文件中读取一个字节的数据。成功获得数据时,函数返回无符号字符型数据的编码,即文件中的存储单元是无符号字符型。
若文件位置指针指向文件的末尾处或读取过程中出现了错误,则函数返回EOF。
使用fgetc函数读取文件中数据时,文件应以"r"模式打开。
库函数fgetc用于从文件位置指针指向的位置读取一个字符,函数的首部为int fgetc(FILE *stream)。
fgetc函数从stream指向的文件中读取一个字节的数据。成功获得数据时,函数返回无符号字符型数据的编码,即文件中的存储单元是无符号字符型。
若文件位置指针指向文件的末尾处或读取过程中出现了错误,则函数返回EOF。
使用fgetc函数读取文件中数据时,文件应以"r"模式打开。
6
例 11-2
在C盘根目录下用记事本程序新建一个文本文件test.txt,编程输出该文件的内容。
在C盘根目录下用记事本程序新建一个文本文件test.txt,编程输出该文件的内容。
程序中以只读方式打开文件。
打开成功后用fgetc函数读取文件的内容,一次一个字符,再用putchar函数输出字符。遇到错误或读取完毕结束循环。
7
11.3.2 文件的结束状态
读取数据时,如果fgetc函数发现文件位置指针指向了文件的末尾处,它将返回EOF,并且文件的结束标记会被设置。
结束标记被设置的文件处于结束状态。
库函数feof用于判断文件是否处于结束状态,首部为int feof(FILE *stream)。
若stream指向的文件处于结束状态,函数返回某个非零值;否则,返回0。
读取数据时,如果fgetc函数发现文件位置指针指向了文件的末尾处,它将返回EOF,并且文件的结束标记会被设置。
结束标记被设置的文件处于结束状态。
库函数feof用于判断文件是否处于结束状态,首部为int feof(FILE *stream)。
若stream指向的文件处于结束状态,函数返回某个非零值;否则,返回0。
8
fgetc函数返回EOF的原因
fgetc函数返回EOF时,可能是出现了错误,也可能是文件中数据读取完毕,即文件位置指针指向了文件末尾。当文件中数据读取完毕后,fgetc函数不仅返回EOF,还会将文件设置为结束状态。
当fgetc函数返回EOF时,若feof函数的返回值不为0,即文件处于结束状态,则成功读取了文件中的全部数据,否则,读取操作因出错而中断。
fgetc函数返回EOF时,可能是出现了错误,也可能是文件中数据读取完毕,即文件位置指针指向了文件末尾。当文件中数据读取完毕后,fgetc函数不仅返回EOF,还会将文件设置为结束状态。
当fgetc函数返回EOF时,若feof函数的返回值不为0,即文件处于结束状态,则成功读取了文件中的全部数据,否则,读取操作因出错而中断。
9
例11-3 fgetc函数的返回值类型
若short i = -1;,则fputc(i, fp);把变量i的低位字节数据写入与fp相关的文件中,即0xFF(8个1)存入文件中。
fputc函数和fgetc函数的功能是存取字符,但从