研究問題:
- 內存緩衝區分類??
- gets()與scanf()讀入數據的區別??
- 避免清除緩衝區數據??
要求:
- 讀取字符時:
scanf()以Space、Enter、Tab結束一次輸入,不會捨棄最後的回車符(即回車符會殘留在緩衝區中);
getchar()以Enter結束輸入,也不會捨棄最後的回車符;
讀取字符串時:
scanf()以Space、Enter、Tab結束一次輸入!
gets()以Enter結束輸入(空格不結束),接受空格,會捨棄最後的回車符! - 爲了避免出現上述問題,必須要清空緩衝區的殘留數據,可以用以下的方法解決:
方法1:C語言裏提供了函數清空緩衝區,只要在讀數據之前先清空緩衝區就沒問題了!
這個函數是fflush(stdin)。
方法2:自己取出緩衝區裏的殘留數據。
scanf(“%[^\n]”,string);