我一直在尝试getchar()
,putchar()
,并一直尝试使用EOF
。下面是我正在尝试的代码段。
#include <stdio.h>
int main(void)
{
int c;
c = getchar();
while(c != EOF)
{
putchar(c);
printf("\n");
printf("%d\n", EOF);
c = getchar();
}
return 0;
}
输入:-
a
预期输出:-
一个
//Due to putchar()
-1
//Value of EOF
//Now the cursor should come in next line and wait for next character.
实时输出:-
a
-1
-1
//Cursor waiting for next character.
我无法理解输出两次显示-1
的原因。
答案 0 :(得分:1)
您的代码注释中说
//Now the cursor should come in next line and wait for next character.
但是第二个循环没有等待。它会读取已经输入的换行符,并在输出中以多余的空白行显示出来。
答案 1 :(得分:1)
在循环之前的第一个输入之后
c = getchar();
输入缓冲区包含与按下的Enter键相对应的换行符'\n'
。
所以在while循环中会输出
a
和
-1
由于陈述
printf("%d\n", EOF);
此循环后的语句
c = getchar();
读取输入缓冲区中存在的换行符。再次声明
printf("%d\n", EOF);
输出
-1