C语言中的字符输入以及符号常量EOF
2013-07-13 11:24
267 查看
我使用的系统是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。
好了,每天进步一点点。
程序如下:
//程序作用:验证表达式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。
好了,每天进步一点点。
相关文章推荐
- 用C语言编程,根据用户输入的半径计算球的表面积,体积,经过圆心的横切圆的面积以及以此球的半径、直径作为直径和高的圆柱体的侧面积、表面积和体积(将π定义成值为3.14的符号常量)
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- C语言中的EOF符号常量
- Getchar函数从标准输入读取读取一个字符并返回它的值。如果输入中不再存在任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾。
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- c语言中scanf输入带空格的字符串以及scanf输入单个字符的问题
- 深入解读C语言中的符号常量EOF
- C语言:输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- <C语言>编写一个程序,该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行数目以及读取的所有其他字符数目。
- C语言初级练习——编写一个乘法表,呈倒三角形、输入一串字符,要求输出这串字符中的数字最多的那段的位置以及这段数字的个数
- C语言中字符的输入输出以及计算字符个数的方法详解
- C语言输入单个字符屏蔽回车符的四种解决方法
- 也谈C语言字符串和字符的输入
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- C语言预处理功能 关于字符串化和符号粘贴
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 习题 8.8 输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少。
- 统计输入的行数,单词数与字符数(C语言)