[英]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.