2024年4月5日发(作者:)

C语言EOF如何使用

C语言EOF如何使用

如果EOF是一个特殊字符,那么假定每个文本文件的结尾都有一个EOF(也就是-1),

还是可以做到的,因为文本对应的ASCII码都是正值,不可能有负值。但是,二进制文件

怎么办呢?怎么处理文件内部包含的-1呢?下面是店铺为大家带来的关于C语言EOF如何

使用的知识,欢迎阅读。

存在问题:

又一次遇到有人问EOF的用法,到底如何来使用那?

解决方案:

这里有一篇文章写的不错,希望对EOF没有理解的同学能有所帮助。

我学习C语言的时候,遇到的一个问题就是EOF。

它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文

件(file),也可以是标准输入(stdin)。

比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。

int c;

while ((c = fgetc(fp)) != EOF) {

putchar (c);

}

很自然地,我就以为,每个文件的结尾处,有一个叫做EOF的特殊字符,读取到这

个字符,操作系统就认为文件结束了。

但是,后来我发现,EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一

般等于-1。

#define EOF (-1)

于是,我就困惑了。

如果EOF是一个特殊字符,那么假定每个文本文件的结尾都有一个EOF(也就是-1),

还是可以做到的,因为文本对应的ASCII码都是正值,不可能有负值。但是,二进制文件

怎么办呢?怎么处理文件内部包含的-1呢?

这个问题让我想了很久,后来查了资料才知道,在Linux系统之中,EOF根本不是一

个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。至于系统怎么知

道文件的结尾,资料上说是通过比较文件的长度。

所以,处理文件可以写成下面这样: