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)。至于系统怎么知
道文件的结尾,资料上说是通过比较文件的长度。
所以,处理文件可以写成下面这样:
发布评论