c语言关于putchar输出

#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;

}

结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-03
// 你括号顺序有问题

while((ch = getchar()) != EOF)

第2个回答  2021-03-16

相似回答