我已经开始阅读“The C Programming Language”(K&R),我对 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
。
我的问题是,如果我只有一个 char 变量,为什么会发生这种情况?其余字符存储在哪里?
编辑:
感谢大家的回答,我现在开始明白了......只有一个问题:
第一个程序在给定 CTRL+D 时退出,而第二个程序打印整个字符串,然后等待更多用户输入。为什么它等待另一个字符串而不像第一个那样退出?
最佳答案
getchar
从标准输入中获取单个字符,在本例中为键盘缓冲区。
在第二个例子中,getchar
函数在 while
循环中,一直持续到遇到 EOF
,所以它会一直循环下去并检索一个字符(并将该字符打印到屏幕上)直到输入变空。
连续调用 getchar
将获得来自输入的连续字符。
哦,不要因为问这个问题而感到难过——我第一次遇到这个问题时也很困惑。
关于c - `getchar()` 在哪里存储用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1004314/