【发布时间】:2020-12-31 00:00:21
【问题描述】:
当我在学习书中的一个例子时,
#include <stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c)
c = getchar();
}
}
我认为先读取字符然后打印它会更有意义,所以切换 putchar 和 getchar
c = getchar();
putchar(c);
现在当我运行它时,putchar 的第一个输出缺少 c 的第一个字符会发生什么?这是输出:
kingvon@KingVon:~/Desktop/C$ ./a.out
first letter is missing?
irst letter is missing?
but now it is not
but now it is not
这很有趣,为什么会这样?
【问题讨论】:
-
你需要一个
do{}while();才能做到这一点 -
标准成语让它更清晰一点:
while( (c = getchar()) != EOF ){ putchar(c); }如果你愿意,你可以写成while( c = getchar(), c != EOF ){ putchar(c); } -
您建议的更改的另一个问题是您最终会致电
putchar(EOF)