判断文件结束函数 feof
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断文件结束函数 feof相关的知识,希望对你有一定的参考价值。
在上一节例2中,程序从一个文件中逐个读取字符并输出到屏幕上显示,在 while 循环中以 EOF 作为文件结束的标志。这种以 EOF 作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的 ASCII 码值的形式存放。我们知道,ASCII 码值的范围是 0~255,不可能出现 -1,因此可以用 EOF 作为文件结束的标志。
当把数据以二进制形式存放到文件中时,就会有 -1 值的出现,此时不能采用 EOF 作为二进制文件的结束标志。为解决这一问题,ANSI C 提供一个 feof 函数,用来判断文件是否结束。如果遇到文件结束,函数 feof(fp) 的值为 1,否则为 0。feof 函数既可以判断二进制文件是否结束,也可以用来判断文本文件是否结束。
例1 编写程序,用于把一个文本文件(源文件)复制到另一个文件(目标文件)中。源文件名为 file_a.dat,目标文件名为 file_b.dat。
程序如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 //声明文件复制函数 5 void filecopy(FILE *fpin, FILE *fpout); 6 7 int main() 8 { 9 FILE *fpin, *fpout; 10 11 fpin = fopen("D:\\\\TEST\\\\file_a.dat", "r"); //打开输入文件 12 if (fpin == NULL) 13 { 14 printf("Can‘t open this file !\\n"); 15 exit(0); //使用exit函数,必须包含stdlib.h头文件 16 } 17 18 fpout = fopen("D:\\\\TEST\\\\file_b.dat", "w"); //打开输出文件 19 20 filecopy(fpin, fpout); //文件复制 21 22 //关闭输入、输出文件 23 fclose(fpin); 24 fclose(fpout); 25 return 0; 26 } 27 28 //定义 filecopy 函数 29 void filecopy(FILE *fpin, FILE *fpout) 30 { 31 char ch; 32 ch = getc(fpin); // 先读一个字符,用 feof 函数判断是否为空文件 33 //遇到文件结束标志,函数 feof(fp) 值为1,否则为0 34 while (!feof(fpin)) 35 { 36 putc(ch, fpout); 37 ch = getc(fpin); // 逐个字符进行复制 38 } 39 }
源文件:
目标文件:
以上是关于判断文件结束函数 feof的主要内容,如果未能解决你的问题,请参考以下文章