幾種輸入輸出的區(qū)別
(1)讀取字符時:
scanf()以Space杨拐、Enter棕所、Tab結(jié)束一次輸入,不會舍棄最后的回車符(即回車符會殘留在緩沖區(qū)中)辨宠;
getchar()以Enter結(jié)束輸入遗锣,也不會舍棄最后的回車符;
(2)讀取字符串時
scanf()以Space嗤形、Enter精偿、Tab結(jié)束一次輸入(自動在字符串后面添加’\0’)
gets()以Enter結(jié)束輸入(用’\0’替代 ‘\n’),接受空格赋兵,會舍棄最后的回車符笔咽!
(3)輸出時
- puts()在輸出字符串時會將’\0’自動轉(zhuǎn)換成’\n’進行輸出,也就是說毡惜,puts方法輸出完字符串后會自動換行拓轻。
解決辦法
- 方法1:C語言里提供了函數(shù)清空緩沖區(qū)斯撮,只要在讀數(shù)據(jù)之前先清空緩沖區(qū)就沒問題了经伙!
這個函數(shù)是fflush(stdin)。 - 方法2:自己取出緩沖區(qū)里的殘留數(shù)據(jù)勿锅。
scanf("%[^\n]",string);