scanf("%c",&c) 與 scanf(" %c",&c)的區別

scanf(“%c”,&c) 與 scanf(” %c”,&c),後者只是在%前多了個空格,似乎沒有什麼區別,但使用起來區別是很大的。

scanf()作單字符輸入時規定只接收一個字符,但它卻把回車符也作爲字符對待的。這個回車符是放在緩衝區的,但是空格卻是直接忽略掉。

這就造成程序中第二次調用scanf(“%c”,&c)是從緩衝區中取一個字符,把第一次調用scanf(“%c”,&c)後輸入的回車當作輸入字符了。

這就在輸入邏輯上造成了混亂。

有了scanf(” %c”,&c)這個空格(換成\n或者\t也可以),這樣就把緩衝區中的回車當成第一個字符,讀取後丟掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章