scanf遇到ctrl+z就會(huì)結(jié)束(輸入會(huì)造成讀取失敗返回EOF)
成都創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)陽(yáng)新,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108在調(diào)用? getchar和scanf? 時(shí)候,getchar/scanf 都會(huì)從緩沖區(qū)拿走數(shù)據(jù)
如果鍵盤輸入一個(gè)值 按了空格或者回車
scanf和getchar 只會(huì)讀到 輸入\n前的值
大概就是:鍵盤中輸入的數(shù)據(jù)存放在緩沖區(qū),scanf和getchar 函數(shù)從緩沖區(qū)讀取數(shù)據(jù),讀取成功后讀取的數(shù)據(jù)在緩沖區(qū)中清空,緩沖區(qū)只留下了\n?
錯(cuò)誤:scanf在輸入一個(gè)值時(shí)(假如是abcde)按了回車就是 abcde\n 但是scanf只能讀取\n前的值
這時(shí)候緩沖區(qū)就剩下\n了。? ?接下來(lái)getchar在想輸入一個(gè)值時(shí)看見緩沖區(qū)有個(gè) \n 直接讀取了,還
來(lái)不及鍵盤輸入。ch就等于了\n直接走到了else這步。那該問(wèn)題應(yīng)該怎么處理?
另外在提一個(gè)scanf注意事項(xiàng):scanf 只會(huì)讀到輸入空格前的值 空格后的值留在了緩沖區(qū)
比如:輸入abcde 123 scanf真正讀取的的只有abcde,緩沖區(qū)剩下123
如同以上問(wèn)題一起清理緩沖區(qū)很簡(jiǎn)單,就是在 scanf讀取一個(gè)值后,while循環(huán)一個(gè)getchar把緩沖區(qū)剩下的東西讀走!
如有錯(cuò)誤,請(qǐng)大佬們糾正!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧