scanf(“%c”,&c) 與 scanf(” %c”,&c),後者只是在%前多了個空格,似乎沒有什麼區別,但使用起來區別是很大的。
scanf()作單字符輸入時規定只接收一個字符,但它卻把回車符也作爲字符對待的。這個回車符是放在緩衝區的,但是空格卻是直接忽略掉。
這就造成程序中第二次調用scanf(“%c”,&c)是從緩衝區中取一個字符,把第一次調用scanf(“%c”,&c)後輸入的回車當作輸入字符了。
這就在輸入邏輯上造成了混亂。
有了scanf(” %c”,&c)這個空格(換成\n或者\t也可以),這樣就把緩衝區中的回車當成第一個字符,讀取後丟掉。