当输入直接在终端中时,我的代码工作正常,但在与输入重定向(相同内容)一起使用时会创建无限循环。
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;
}
答案 0 :(得分:1)
你的程序真的在终端中循环并且输入pipe
,区别在于终端 getchar
阻止等待输入但在{ {1}}获得pipe
。
您应该在每次EOF
次调用后检查EOF
,以便解决您可以执行的循环问题,
getchar