我很抱歉问这个愚蠢的问题,而且我已经检查过与这篇文章相关的帖子,但仍然没有找到任何帮助。在下面的代码片断:getchar()!= EOF K&R
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar(c);
}
Q1:如果我输入hello
,输出是hello
。不应该只是h
,因为虽然getchar可以读取整个字符串,但它只接受一个字符,因此产生输出为h
?
Q2:假定I输入n
,不应它按照以下步骤:
- getchar函数将存储 'N' 为单个字符。
- 由于c的数据类型是整数,所以n的ASCII值被存储,即110。
- 这是针对EOF的整数值或-1进行测试的,因为结果为true或布尔值为1 ,循环的主体被执行。
- 执行循环体内的内容后,控件再次返回到'while'循环的条件,并且提示用户再次输入该字符,并且该循环继续进行直到它不等于EOF ?
你只是复制你输入的字符作为输入。但c总是保存你输入的最后一个字符,忘记其他字符。 –
Q2不会在第一季回答你的问题吗?当你输入'hello'时,它会在第一次读取'h',并在执行主体后回到循环的开头。下一次它读取'e',等等。 – Barmar
Upvoted使用'int c;'...但是'main'签名是错误的。 'int main(void)'。 –