是否有可能同时在循环正从的getchar()输入到一个printf()函数来执行多次?

问题描述 投票:0回答:1

我期待的getchar()!= EOF总是返回一个布尔值,这将在但是分配给“c”和输出将是0或1的循环的每次迭代,我得到用于单输入多输出。

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

输入端1,输出为11,和用于输入-2,则输出为111。

这可能是造成它打印多次?

c gcc printf eof getchar
1个回答
1
投票

额外的输出是因为每个输入你有行终止附加字符。

试试这个,看看到底是什么的getchar()为您的每个输入返回:

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

当你输入1,你会得到两个字符,

x31
xa

当你键入-2,你有三个大字,

x2d
x32
xa

由于以上都不是EOF,你从你的日常得到多个“1”。

© www.soinside.com 2019 - 2024. All rights reserved.