天天看點

在scanf裡面使用換行符\n是一種什麼體驗?scanf("%d\n",&a);

今天有個學生發了簡單的求周長程式給我,和我說,不知道為什麼輸入了4個數,而且最後計算時input long 輸入的兩個數,和輸入的width沒有關系了。

課堂強調過scanf裡面不要去用\n,我原以為是會警告, 沒有想到“\n”在scanf裡面有它自己的意義所在。

在scanf中 “\n” 不是表示接受一個回車符,而是表示忽略所有的空白字元(包括回車,空格,tab )。是以想要結束輸入,輸入任意一個非空白字元即可,但是該字元仍然會留在緩沖區中。      
如果說,使用了 “\n”,希望變量a,b存入的數值是每個scanf輸入的第一個數字的話,可以清除緩存。      
如下面的程式。一般不建議在 scanf中使用“\n”。      
在scanf裡面使用換行符\n是一種什麼體驗?scanf("%d\n",&a);
後來發現,原來fflush(stdin);并不是C标準裡面有的,從代碼的移植性考慮。可以采用下面這篇文章作者的做法。(此處就做部分截圖)。      

http://my.oschina.net/deanzhao/blog/79790

在scanf裡面使用換行符\n是一種什麼體驗?scanf("%d\n",&a);

繼續閱讀