练习1-6:第17页K&R-getchar问题

问题描述

当我运行下面的程序时,输出给出第二个1。我调试了程序,但是我不明白为什么编译器随时都写第二个1?

output like this.

const

解决方法

while语句中的条件

while (c = getchar() != EOF)

等同于

while (c = ( getchar() != EOF) )

由于运算符的优先级。如果输入未中断,则此逻辑表达式getchar() != EOF总是产生1

您需要写

while ( ( c = getchar() ) != EOF)
,

您按下的 Enter 键将终端的输入“发送”到程序,并作为换行符'\n'添加到输入缓冲区中,将在第二次迭代中读取循环。