在以下程序中:
#include <stdio.h>
int main() {
int c;
c = getchar();
putchar(c);
}
即使在输入中写入多个字符并按
enter
,也只会打印第一个字符。
但是在下面的程序中:
#include <stdio.h>
int main() {
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
当我写多个字符时,它会打印所有字符。
我的问题如下:为什么当我按 Enter 时,它不像第一个程序那样只打印输入中的第一个字符,以及为什么在调用
putchar(c)
之前评估 while 中的条件?
输入是行缓冲的。当您输入字符并按 Enter 键时,缓冲区包含您输入的所有字符 +
'\n'
(新行)。
getchar
函数从该缓冲区中获取一个字符并返回它
'\n'
字符。