C语言的EOF函数到底是怎么工作的啊?

发布网友 发布时间:2022-04-23 21:25

我来回答

3个回答

热心网友 时间:2022-04-26 21:42

C语言的EOF函数,主要工作是来判断文件是否结束。
比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。
  int c;
  while ((c = fgetc(fp)) != EOF) {
    putchar (c);
  }

EOF是End Of File 的缩写,EOF不是特殊字符,而是c语言中标准库中定义的宏,定义为:#define EOF (-1);
feof() 用于测试流文件的结束,有宏和函数两种定义:
宏定义: #define feof(_stream) ((_stream)->_flag & _IOEOF),其中_IOEOF的为:#define _IOEOF 0x0010
函数定义:int feof( FILE *stream );

EOF的值为-1,是int类型数据,在32位系统中,可以表示为0xFFFFFFFF; EOF 不是一个字符,也不是文件中实际存在的内容。EOF不但能表示读文件到了结尾这一状态,它还能表示 I/O 操作中的读、写错误(可以用 ferror() 来检测)以及其它一些关联操作的错误状态;
feof()只用于测试流文件的结束,当到达结尾时,返回非0;当文件内部位置指针指向文件结束时,并未立即置位FILE结构中的文件结束标记,只有再执行一次读文件操作,才会置位结束标志,此后调用feof才会返回为真。
函数如fgetc或getc返回EOF并不一定表示文件结束,当读取文件出错时也会返回EOF,仅凭返回-1就认为文件结束是错误的;正因为如此,我们需要feof()来判断文件是否结束,当然用feof()来判断文件结束时也需要判断读取操作是否出错,这时可以用ferror()来判断,当其为真时表示有错误发生。在实际的程序中,应该每执行一次文件操作,就用用ferror函数检测是否出错。

热心网友 时间:2022-04-26 23:00

在没有输入时,getchar 函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个
值称为EOF(end of file,文件结束)。

热心网友 时间:2022-04-27 00:35

只有当输入Ctrl + z 的时候才会输出结果这就是它的作用。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com