带有重定向的无限循环,但在正常输入下正常运行

时间:2017-03-31 18:22:33

标签: linux c

当输入直接在终端中时,我的代码工作正常,但在与输入重定向(相同内容)一起使用时会创建无限循环。

int main()
{
    int c,d;
    int x=1;
    while(x)
    {
        c=getchar();
        if((c>='A')&&(c<='J'))
        {
            d=getchar();
            if(d=='\n'||d==EOF)
            {
               if(c=='A')
                    x=0;
            }   

        }
        if(x)
        {
            printf("Invalid Input\n");//this keeps repeatingn  
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

你的程序真的在终端中循环并且输入pipe,区别在于终端 getchar阻止等待输入但在{ {1}}获得pipe

您应该在每次EOF次调用后检查EOF,以便解决您可以执行的循环问题,

getchar