我正在尝试通过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()
?
答案 0 :(得分:1)
关于scanf的主题......
http://www.giannistsakiris.com/2008/02/07/scanf-and-why-you-should-avoid-using-it/
现在使用getChar时会发生什么?你的意思是它达到一个无限循环,或者它通过while循环而且"继续前进"?
答案 1 :(得分:0)
在这段代码中
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