getchar()和输入缓冲区
书中的一个例子:getchar()和输入缓冲区,c,buffer,getchar,C,Buffer,Getchar,书中的一个例子: #include <stdio.h> m
#include <stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
#包括
main()
{
INTC;
c=getchar();
而(c!=EOF){
普查尔(c);
c=getchar();
}
}
现在这本书没有解释太多,但是说getchar()读取下一个字符输入。我相信在循环必须处理输入缓冲区之前,使用c=getchar()
的原因。我已经对它做了研究,但仍然不能完全理解它。在本例中,删除c=getchar()
不会影响程序的运行方式
循环之前的
c=getchar()
的确切原因是什么?它与输入缓冲区有什么关系?另外:如何输入EOF?按enter键或-1键不会终止循环,因此在这种情况下,我不明白在这种情况下如何需要检查EOF。如果删除c=getchar()
在循环之前,c
的值将在首次进入循环时不确定。因此,在打印一个字符并读取下一个字符之前,必须先读取一个值
要输入EOF,您可以按CTRL-D或CTRL-Z,具体取决于您使用的是Linux还是Windows。要发出EOF信号,请在Windows上键入control-Z,或在Mac或Linux上键入control-D。它必须在一行的开头。如果标准输入是文件而不是终端窗口,则当文件中没有更多字符时,I/O库将返回EOF。它不是一个字符。如果在您第一次执行
c=getchar()
之前,c
没有明显的值,因此检查它是否有特定值的测试是没有意义的,那么您的读取速度太快了。