while(scanf("%d\n",&a)!=EOF&&n)為何多了個\n,這個判斷n是否為0就用不上了?還是我完全弄錯了?還有EOF有沒有一個簡單點的解釋?
EOF是個宏,大概就是#define EOF (-1)
類似的玩意scanf
輸入時如果遇到輸入流結束,就會返回EOF,也就是-1,所以通過scanf
的返回值判斷輸入有否讀完scanf("\n")
表示扔掉輸入流中的不可見字符,主要是配合getchar
之類的函數使用,避免後者讀進來一些不可見的控制字符
單純的用scanf
輸入的話寫成scanf("%d")
和scanf("%d\n")
基本沒有區別,反而是後者有時候會偶爾出現一點小問題