C语言中的字符输入以及符号常量EOF

来源:互联网 发布:瑜伽服推荐知乎 编辑:程序博客网 时间:2024/04/25 19:13

我使用的系统是centos5.5,编译器是gcc 2.5。

程序如下:

//程序作用:验证表达式getchar()!=EOF时的值是0还是1.

#include<stdio.h>

main()

{

int c;

while(c=getchar()!=EOF)            //!=的优先级比=的优先级高,故表达式从右往左结合

printf("%d\n",c);

printf("%d - at EOF\n",c);

}

gcc编译后,生成a.out文件。

./a.out执行,我输入如下数据:

2回车

输出:

1

1

怎么会输出两个1?仔细想想,回车也是一个字符,所以实际是两次输入,故输出两个1。也说明当输入不等于EOF时,表达式getchar()!=EOF值是1。

接着输入:

回车

输出:

1

输入:-1回车

输出:

1

1

1

‘-’,1,‘回车’共3个字符,故输出3个1。

这时候我想怎么结束输入呢,我的系统下是 Ctrl键+D。

按下Ctrl键+D,即相当于输入EOF,输出为:

0  - at EOF

这说明输入等于EOF时,表达式getchar()!=EOF值是0。

因为EOF是定义在头文件<stdio.h>中,故可以在程序最后加入下行代码看EOF的值:

printf("%d\n",EOF);

输出结果是-1。

好了,每天进步一点点。微笑

原创粉丝点击