亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于EOF在循環中運用的問題,謝謝了?

關于EOF在循環中運用的問題,謝謝了?

飛翔的小馬哥 2017-07-11 21:38:18
代碼如下;```?#include <stdio.h>int main(){ int count = 0; int ch; while ((ch = getchar()) != EOF) count++; printf("All of the characters is %d.\n", count); return 0;}??```程序目的是計算輸入的字符個數,我分別輸入了三種情況的數據,得到情況如下:1、什么都不輸入直接按【ctrl + D】 (Linux系統) 程序直接退出。2、abc【ctrl + D】【ctrl + D】程序退出。注意:這個時候我需要按兩下才能退出。3、abc【回車】這個時候光標移動到了下一行行首,我再按【ctrl + D】程序退出。我很疑惑第二種情況,為什么需要按兩次【ctrl + D】呢,小白....先謝謝了
查看完整描述

2 回答

已采納
?
Camel97

TA貢獻49條經驗 獲得超38個贊

主要有兩點,第一個是 io操作存在一個緩沖區的問題,一般終端輸入會先被寫入緩沖區,當以回車或者EOF結束時getchar才能開始讀取。第二個是當EOF作為結尾時,getchar開始讀取這一行,但是不會去讀最后的EOF字符,這應該是一種特性。但是如果在新的緩沖區直接寫入EOF,getchar可以讀取到EOF。你的第一個EOF是作為第一個緩沖區的結束不被讀取,第二個EOF被讀取。

查看完整回答
1 反對 回復 2017-07-12
?
花間獨行

TA貢獻2條經驗 獲得超0個贊

【ctrl + D】向下填充,相當于回車

查看完整回答
反對 回復 2017-07-12
  • 2 回答
  • 0 關注
  • 2488 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號