天天看點

《C語言解惑》—— 2.4 空格讓scanf莫名其妙

本節書摘來自華章出版社《c語言解惑》一 書中的第2章,第2.4節,作者:劉振安 劉燕君,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

【例2.6】程式中的scanf函數含有空格,是否能通過編譯?請分析運作結果。

【分析】在最後一個“%d”和“"”之間留有空格的語句

scanf ( "%d%d%d ", &x, &y, &z );

與沒有留白格的語句

scanf ("%d%d%d", &x, &y, &z );

的功能是不一樣的。前者在“%d”後面有空格,雖然能通過編譯,但運作時的結果不一樣。至于是留一個還是多個空格,結果卻是一樣的。含有空格的程式,在輸入三個資料并按回車後,程式絲毫沒有反應。再輸入一個資料,才能繼續運作并輸出前三個資料。例如輸入資料“1 2 3 4”,則輸出“1,2,3”。語句

scanf ( " %d %d %d", &x, &y, &z );

是在格式說明符中間和前面有空格,這種情況能得到正确結果。由此可見,最後一個%d與雙引号之間不能有空格。

繼續閱讀