我已经开始阅读“The C Programming Language”(K & R),我对getchar()
函数有怀疑。getchar()存储用户输入的位置?
例如这样的代码:
#include <stdio.h>
main()
{
int c;
c = getchar();
putchar(c);
printf("\n");
}
键入toomanychars
+ CTRL + d(EOF)打印只是t
。我认为这是预料之中的,因为它是第一个推出的角色。
但随后这个其它的代码:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
键入toomanychars
+ CTRL + d(EOF)打印toomanychars
。
我的问题是,为什么会发生这种情况,如果我只有一个字符变量?剩余的字符在哪里存储?
编辑:
感谢大家的答案,我开始得到它现在...只有一个陷阱:
第一个程序退出给出CTRL +d而当第二个打印整个字符串,然后等待更多的用户输入。为什么它会等待另一个字符串,不会像第一个字符串那样退出?
你的第二种方法只是循环直到EOF。 CTRL + D(在典型的unix系统上)不会导致EOF,除非你自己在一行上。写完一个字符后按CTRL + D不会导致EOF – nos 2009-06-16 23:19:41