代码:
#include<stdio.h>
main()
{
int c;
printf("Enter any charachter!: ");
while((c = getchar()) != EOF) {
putchar(c);
printf("%d\n", (c = getchar()) != EOF);
}
}
我尝试在C中测试EOF,但遇到了困难。我想获取EOF的值,发现它是-1
。
我使用getchar()
和putchar().
我已经添加了程序和输出的屏幕截图。输出对我来说毫无意义。
如您所见,我正在尝试获取一个字符并使用getchar()
和putchar()
显示它。我正在尝试打印出while循环中使用的条件的值。为了检查EOF,我特意输入-1
作为输入。 putchar()
打印出-1
,然后最后的printf语句使我感到困惑。我为-1
输入getchar()
,但显示1
表示c不等于EOF。但我认为-1
是EOF。
而且我不明白为什么还会显示11
。我正在使用codeblocks
IDE。
请帮我。预先感谢。
答案 0 :(得分:2)
EOF
不是字符,也不是从流中读取的。它只是返回值,表明该流上没有更多输入。您可以通过在* nix上键入 Ctrl D 或在Windows上键入 Ctrl Z 来发出EOF
信号。
答案 1 :(得分:-1)
getchar一次输入一个字符(字节)。因此,当您输入“ -1”时,它将被视为字符数组输入,并且第一个getchar仅接受输入“-”,第二个getchar接受输入“ 1”。因此,您没有得到所需的输出。另外,putchar旨在一次打印一个字符。因此它可能也无法正常工作。您可以按照以下方式更改代码以使其正常工作。
int c;
while(scanf("%d", &c)!=EOF) { //to ensure there is some input value as scanf will return EOF when input stream finishes.
printf("%d\n", c);
if(c == EOF) {
printf("c is equal to EOF\n");
break;
}
}