c语言中的EOF 文件结束符号

很多学习过或者正在使用c语言的同学其实都会忽略EOF 这个关键字,但其实真正读懂EOF关键字是非常有好处的。

在linux内核中 大量使用EOF,如果你不真正搞懂他 很多代码你是看不明白的。

 

下面我们来看一段代码

 

#include<stdio.h>
int main()
{
	int c;
	c=getchar();

	while((c=getchar())
		!=EOF)
	{
		putchar(c);
	}


}

很多c语言的书上都会有这么一段代码

但其实很多人并未思考 getchar函数实际上是从文本流中读入下一个输入字符,

 

在这段代码中为什么要用int 的变量来获取他的返回值呢?

 

因为我们在声明变量c的时候  必须让它大到足以存放getchar 函数返回的任何值。这里之所以不把c声明成char类型,是因为他必须足够大,除了能存储任何可能的字符外,还要能存储文件结束符号 EOF

 

因此我们必须将c 声明成int类型。

 

另外 我们在linux下 想要输入EOF符号的唯一方法就是 ctrl+d  。一般来说 打印出来EOF的值可以看出来 是-1.

posted @ 2012-09-17 22:25  巴主席其实是个程序员  阅读(559)  评论(0)    收藏  举报