【发布时间】:2010-11-03 12:13:29
【问题描述】:
我已经开始阅读“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 时退出,而第二个程序打印整个字符串,然后等待更多用户输入。为什么它等待另一个字符串而不像第一个那样退出?
【问题讨论】:
-
您的第二种方法只会循环到 EOF。 CTRL+D (在典型的 unix 系统上)不会导致 EOF,除非你在它自己的一行上点击它。写完字符后按 CTRL+D 不会导致 EOF
标签: c loops io kernighan-and-ritchie