2011-09-23 33 views
2

以下格式字符串的聲明:幫助在scanf

int i; 
scanf("%d ",&i); 

爲什麼在格式字符串的末尾空間導致scanf函數接受兩個輸入端,而不是1?

+1

你是什麼意思「接受兩個輸入」?你的輸入是什麼樣的? –

回答

4

格式字符串末尾的空格告訴scanf在第一個整數之後吃掉空格。它實際上並不接受第二個輸入。當你輸入第二個值時,scanf會看到它返回的空白完成,將第一個整數存儲到變量i中。 「第二個輸入」仍然在標準輸入流中。

+0

在第一個整數之後吃掉空白是什麼意思?吃stdin緩衝區中的空白區域?我什麼時候需要吃掉空白。請舉個例子。 – Bruce

+0

你不**有吃空白。您正在指示scanf在讀取整數後吃任何空格。直到scanf看到EOF或非空白的東西,它才能返回。 –