繁体   English   中英

使用while(scanf)输入问题:为什么使用getchar()会使输入继续进行

[英]Inputting issues with while(scanf): why does using getchar() keep the input going

我试图通过while(scanf)过程获得8个输入。 首先,我尝试了以下代码:

while(scanf("Dia %d %d : %d : %d Dia %d %d : %d : %d",&day_start,&h1,&m1,&s1,&day_end,&h2,&m2,&s2)==8)    

但是,在程序执行一次后,它终止。 然后,在输入后使用了getchar() ,如下所示:

while(scanf("Dia %d %d : %d : %d Dia %d %d : %d : %d",&day_start,&h1,&m1,&s1,&day_end,&h2,&m2,&s2)==8)
{
    getchar();
    ......;
}

完成此操作后,输入在每次执行后都会继续进行。 那么,为什么使用getchar()使输入继续进行呢?

是否因为最后一个输入被用作输入,并且在使用getchar()之后将输入输入了getchar()

关于扫描...

http://www.giannistsakiris.com/2008/02/07/scanf-and-why-you-should-avoid-using-it/

现在,当您使用getChar时,具体发生了什么? 您是说它到达了无限循环,还是经过了while循环并“继续前进”?

在这段代码中

while(scanf("Dia %d %d : %d : %d Dia %d %d : %d : %d",&day_start,&h1,&m1,&s1,&day_end,&h2,&m2,&s2)==8)

第一次执行后,最后按下的回车键将作为第二个scanf的第一个字符,必须继续按D才能继续,而无法达到。

而在这段代码中

while(scanf("Dia %d %d : %d : %d Dia %d %d : %d : %d",&day_start,&h1,&m1,&s1,&day_end,&h2,&m2,&s2)==8)
{
    getchar();
    ......;
}

最后一个回车键进入getchar()而不是scanf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM