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

Rit*_*nha 4 c

这是我的代码

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

输出(当我输入时A):

A
1A1
Run Code Online (Sandbox Code Playgroud)

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

mch*_*mch 9

这是因为您输入A<enter>。所述<enter>产生第二1

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

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

和没有:https : //ideone.com/QsXiYz