以下C代码的输出使我感到困惑

时间:2019-05-08 07:02:49

标签: c

这是我的代码

#include <stdio.h>
main()
{
    int c;
    c=getchar();
    while(c!=EOF)
    {
        int x;
        x=(c!=EOF);
        printf("%d",x);
        putchar(c);
        c=getchar();
    }
}

输出(当我输入A时):

A
1A1

为什么不只1A。为什么要重复1。像第一个一样,程序将从getchar中获取c的值。然后它将进入循环。当condition为true时,它将打印x的值,然后打印c的值。再一次,它应该要求我提供输入。而是显示另一个1,然后要求输入。请帮助。

2 个答案:

答案 0 :(得分:9)

这是因为您输入了A<enter><enter>产生第二个1

您可以在Unix上按CTRL + D或在Windows上按CTRL + Z关闭程序的标准输入,而不必按<enter>。这将为您提供预期的输出。

使用<enter>https://ideone.com/lWJ3Xz

且不包含:https://ideone.com/QsXiYz

答案 1 :(得分:3)

只需最少的调试工作,您就会了解自己。

printf("FEOF=%d, C=0x%x\n",x,c);