#include <stdio.h>
#include <conio.h>
main()
{
int c;
while(c = getchar()!= EOF)
printf("%d\n",c);
printf("%d - at EOF\n",c);
}
对于表达式:c = getchar()!= EOF,其执行过程是:
先进行getchar() != EOF的判断,
然后再将比较的结果(0或者1)赋值给c
那么对于正常的输入,getchar()将返回所输入的字符的ASCII码值,这个值是不会等于EOF的。
此时,getchar() != EOF的比较结果是真(1)。
但是,getchar()只有在接受到回车时才会终止从键盘接受数据的状态(终止getchar()函数本身),所以,楼主看到的现象是:敲了很多字符,但没见输出!当敲回车了,会一次输出很多1,而且1的个数和前面输入的字符数量一致。
EOF就是-1!也就是说,楼主可以把程序中的EOF改成-1.
直到楼主敲:Ctrl+z,并且再敲回车,这才会结束程序。
接受现实吧!
应该说,从这个例题,楼主可以学习到getchar()函数的工作特性。
#include <conio.h>
main()
{
int c;
while(c = getchar()!= EOF)
printf("%d\n",c);
printf("%d - at EOF\n",c);
}
对于表达式:c = getchar()!= EOF,其执行过程是:
先进行getchar() != EOF的判断,
然后再将比较的结果(0或者1)赋值给c
那么对于正常的输入,getchar()将返回所输入的字符的ASCII码值,这个值是不会等于EOF的。
此时,getchar() != EOF的比较结果是真(1)。
但是,getchar()只有在接受到回车时才会终止从键盘接受数据的状态(终止getchar()函数本身),所以,楼主看到的现象是:敲了很多字符,但没见输出!当敲回车了,会一次输出很多1,而且1的个数和前面输入的字符数量一致。
EOF就是-1!也就是说,楼主可以把程序中的EOF改成-1.
直到楼主敲:Ctrl+z,并且再敲回车,这才会结束程序。
接受现实吧!
应该说,从这个例题,楼主可以学习到getchar()函数的工作特性。
当一名对得起学生学费的老师,一直是我的目标!我会更努力的!