为什么我必须按ctrl+;d多次让scanf看到它?
在我的程序中,我需要以这种格式读取数字——数字、数字、数字等,当用户按ctrl+d时,它结束。I开关为什么我必须按ctrl+;d多次让scanf看到它?,c,scanf,eof,C,Scanf,Eof,在我的程序中,我需要以这种格式读取数字——数字、数字、数字等,当用户按ctrl+d时,它结束。I开关scanf(“%d”和&I)和scanf(“%c”和&c) 我的问题是,当我按ctrl+d三次时,程序结束,第一次和第二次由于某种原因忽略它。我还注意到,如果我调试并写入:“5,6ctrl+d”,它将读取“5”,然后等待下一个输入。为什么,当已经有6和ctlr+d时?谢谢 我的代码: for (;;) { if (cislo==1) { res=scanf("%d",&mati
scanf(“%d”和&I)
和scanf(“%c”和&c)
我的问题是,当我按ctrl+d三次时,程序结束,第一次和第二次由于某种原因忽略它。我还注意到,如果我调试并写入:“5,6ctrl+d”,它将读取“5”,然后等待下一个输入。为什么,当已经有6和ctlr+d时?谢谢
我的代码:
for (;;)
{
if (cislo==1)
{
res=scanf("%d",&matice[x][y]);
if (res==-1)
{
...
return 1; /* i want EOF to be after number, not char */
} else
{
...
cislo=0;
}
} else
{
res=scanf("%c",&znak);
if (res==-1)
{
...
break;
} else
{
...
cislo=1;
};
};
};
您正试图用3个
scanfs()
读取3个输入,每个CTRL-D
都被视为一个输入,因此您的程序会忽略前两个输入,并在第三个输入后终止
对于像
5,6ctrl+d
这样的输入,scanf()
读取整个字符串,但只将5
转换为适当的数字并存储在提供的变量中。之后的字符串将被丢弃。下一个scanf()
再次等待读取下一个数字。编辑了我的帖子,所以有代码。我不太清楚你在说什么,我应该换一辆车,还有什么需要帮忙的吗?不知道如何编辑代码才能正常工作