我是编程新手,我似乎无法理解为什么我的代码中会发生以下情况,即:
#include <stdio.h>
/*copy input to output; 1st version */
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
所以在做了一些阅读之后,我收集了以下内容:
- 在我按下 Enter 之前,什么都不会执行,因为
getchar()
它是一个保持功能。 - 在我按下 Enter 之前,我所有的击键都存储在缓冲区中
- 当
getchar()
被调用时,它只是查看缓冲区中的第一个值,成为该值,然后从缓冲区中删除该值。
我的问题是,当我删除第一个c = getchar()
生成的代码时,它的功能与原始代码完全相同,尽管在我输入任何内容之前,屏幕上会立即出现一个笑脸符号。为什么会这样?是不是因为putchar(c)
没有保留代码,而是尝试显示c
尚未定义的 ,因此它输出了一些随机符号?如果有帮助,我正在使用 Code::Blocks。