簡體   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