while(scanf)的输入问题:为什么使用getchar()可以继续输入
我试图通过while(scanf)的输入问题:为什么使用getchar()可以继续输入,c,input,getchar,C,Input,Getchar,我试图通过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 : %
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()
中进行的吗?关于扫描的主题
现在,当您使用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)
while(scanf("Dia %d %d : %d : %d Dia %d %d : %d : %d",&day_start,&h1,&m1,&s1,&day_end,&h2,&m2,&s2)==8)
{
getchar();
......;
}
第一次执行后,最后按下的回车键被视为第二个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)
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
我相信这是正确的。getchar()读取换行符。您应该使用fgets读取整行,然后在行上使用sscanf。我的意思是它通过while循环并“继续”。是的。在第一次迭代中,scanf接受8个输入并返回8个,这使得程序运行。但是,在第二次迭代中,scanf只接受了1个输入(上一次输入)。因此,由于scanf返回的1为false,循环没有继续。getchar()接受上一次输入,不让它进入输入的第二次迭代。