使用 "getchar()" 和 "EOF" 期间无意义的输出流
Nonsensical output stream during the usage of "getchar()" and "EOF"
我一直在试验 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;
}
Input: -
a
Expected output: -
a //Due to putchar()
-1 //Value of EOF
//Now the cursor should come in next line and wait for next character.
Output getting in real time: -
a
-1
-1
//Cursor waiting for next character.
我无法理解输出显示 -1
两次的原因。
你的代码注释说
//Now the cursor should come in next line and wait for next character.
但是第二个循环不等待。它读取已经输入的换行符,这由输出中的额外空白行显示。
循环前第一次输入后
c = getchar();
输入缓冲区包含对应于按下的 Enter 键的换行符 '\n'
。
所以在while循环中有输出
a
和
-1
由于声明
printf("%d\n", EOF);
之后这个语句在循环中
c = getchar();
读取输入缓冲区中存在的换行符。所以再次声明
printf("%d\n", EOF);
产出
-1
我一直在试验 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;
}
Input: -
a
Expected output: -
a
//Due to putchar()
-1
//Value of EOF
//Now the cursor should come in next line and wait for next character.
Output getting in real time: -
a
-1
-1
//Cursor waiting for next character.
我无法理解输出显示 -1
两次的原因。
你的代码注释说
//Now the cursor should come in next line and wait for next character.
但是第二个循环不等待。它读取已经输入的换行符,这由输出中的额外空白行显示。
循环前第一次输入后
c = getchar();
输入缓冲区包含对应于按下的 Enter 键的换行符 '\n'
。
所以在while循环中有输出
a
和
-1
由于声明
printf("%d\n", EOF);
之后这个语句在循环中
c = getchar();
读取输入缓冲区中存在的换行符。所以再次声明
printf("%d\n", EOF);
产出
-1