今天有個學生發了簡單的求周長程式給我,和我說,不知道為什麼輸入了4個數,而且最後計算時input long 輸入的兩個數,和輸入的width沒有關系了。
課堂強調過scanf裡面不要去用\n,我原以為是會警告, 沒有想到“\n”在scanf裡面有它自己的意義所在。
在scanf中 “\n” 不是表示接受一個回車符,而是表示忽略所有的空白字元(包括回車,空格,tab )。是以想要結束輸入,輸入任意一個非空白字元即可,但是該字元仍然會留在緩沖區中。
如果說,使用了 “\n”,希望變量a,b存入的數值是每個scanf輸入的第一個數字的話,可以清除緩存。
如下面的程式。一般不建議在 scanf中使用“\n”。
後來發現,原來fflush(stdin);并不是C标準裡面有的,從代碼的移植性考慮。可以采用下面這篇文章作者的做法。(此處就做部分截圖)。
http://my.oschina.net/deanzhao/blog/79790