#include<stdio.h>int main(void){ int ch; while((ch = getchar() != EOF)) putchar(ch); return 0;}很简单的代码,但输出不对,输出见图片,总是输出不了字母,输出的是一个个方块,不知道为什么,求大神明惑。
问题出在while((ch = getchar() != EOF))语句;!=运算级别高于=,所以会先进行getchar()!=EOF运算,再将运算结果赋值给ch,因而ch的值只能是0或1;纠正的办法:
while((ch = getchar() )!= EOF)
用括号给变运算符优先级,将ch=getchar()括起来。
另外,EOF是字符串的结束符号,因而,只做上述改动,程序会陷入死循环。所以指定一个结束标志使循环结束:
while((ch = getchar() != '\n'))
经过这样的修改,程序运行就没问题了。
完整的程序如下:
#include<stdio.h>
#include<string.h>
int main()
{
int ch;
while((ch = getchar())!='\n')
putchar(ch);
putchar('\n');
return 0;
}
结果: