c語言getchar和,C語言getchar 和EOF

2021-12-19 13:10:12 字數 2990 閱讀 9681

1樓:匿名使用者

感覺是緩衝區的問題

getchar是從緩衝區讀取字元

而c程式獲取到緩衝區資料的條件是在輸入中獲取到了換行符或者eof一類的值

當遇到換行符的時候,會把輸入的資料,包括換行符在內,存到緩衝區

當遇到eof的時候,會把輸入的資料,不包括eof存到緩衝區,除非只有eof

所以當你在輸入abcdf^z時,abcdf送到緩衝區供getchar讀取,但是eof被忽略了

當下次輸入^z時,由於只有eof,所以eof被送到緩衝區並被getchar捕獲,導致程式結束

你可以試試輸入abcdf後回車,應該同樣會列印!!!!! 再輸入^z,同樣可以退出程式

一家之言 僅供參考 望有幫助

2樓:小白羊的青春

你好,你的第一次輸入的是

while 迴圈前的 a=getchar() 值是abcdf在while(a != eof) 迴圈判斷時 可以理解為這樣的 while(abcdf != eof)

之後在while 迴圈體內輸出!!!!!

接著你二次輸入 是在while 裡面的這條 語句 a=getchar()

其實這個迴圈體執行了 5次迴圈

3樓:匿名使用者

。。。a應該定義為int型

(c=getchar())!=eof是什麼意思

4樓:匿名使用者

getchar()!=eof用來判斷是否已經讀取完。

eof 是-1 即讀入的已不是正常的字元而是檔案的結束符;

當輸入字串的時候,可以使用getchar()讀取其中的每一個字元,輸入字串的時候最後一般輸入一個回車,回車以後輸入快取裡面就沒有資料了。

只能使用while(getchar()!='\n')也就是讀到回車就退出,否則會一直等待使用者的輸入

ctrl+c是停止迴圈,結束程式。

5樓:寶若谷郎雨

當我們輸入字串的時候,可以使用getchar()讀取其中的每一個字元,getchar()!=eof用來判斷是否已經讀取完。我們輸入字串的時候最後一般輸入一個回車,回車以後輸入快取裡面就沒有資料了。

只能使用while(getchar()!='\n')也就是讀到回車就退出,否則會一直等待使用者的輸入

ctrl+c是停止迴圈,結束程式

6樓:小傻

該getchar()!=eof用來判斷是否已經讀取完,是在c語言當中使用的:

eof 是-1 即讀入的已不是正常的字元而是檔案的結束符;

當輸入字串的時候,可以使用getchar()讀取其中的每一個字元,輸入字串的時候最後一般輸入一個回車,回車以後輸入快取裡面就沒有資料了。

只能使用while(getchar()!='\n')也就是讀到回車就退出,否則會一直等待使用者的輸入

ctrl+c是停止迴圈,結束程式。

7樓:海竹漢羅

就是獲取到的字元不等於-1的意思。

解釋:1)getchar是一個函式,用於從鍵盤獲取一個字元;

2)eof是一個巨集,值是-1,用於表示文字檔案的結束;

3)通常應該是

(ch=fgetc())!=eof

也就是從檔案讀取資料不是檔案結束;

4)但是如果使用了重定向結束,把鍵盤輸入重定向到檔案,也會出現getchar()

!=eof的寫法。

8樓:

eof 是 -1 即讀入的已不是正常的字元而是檔案的結束符;

\t的意思水平製表跳到下一個tab的位置

9樓:帖誠鄢韞玉

判斷輸入的字元是不是檔案結尾

如果是鍵盤的話就是ctrl+z

c語言中while ((c = getchar()) != eof)在這裡為什麼是輸入回車就有輸出了

10樓:

ctrl+z是產生eof,也就是你程式結束迴圈的標誌但是沒有ctrl+z並不影響迴圈中**的執行呀你如果只按回車專,就會一行字元發屬送到緩衝區,然後被getchar一個個在迴圈中讀取、輸出

直到這一行的最後一個字元讀完,程式會等待下一串字元來到緩衝區只到來到緩衝區的字元中包含ctrl+z,迴圈終止懂?

11樓:

回車鍵不會返回eof訊息 ,回車的ascii**16進位制是「0x0d」 10進位制是「13」 在某些語言中可以用『\r』表示,所以程式在while裡面判斷出條件是成立的 當然往下面執行了

12樓:匿名使用者

看這個。

int c = 0;給個初始版值權

c語言裡,這個語句怎麼終止? while((c=getchar())!=eof) 根本停不下來啊

13樓:匿名使用者

windows:

ctrl + z 產生eof輸出

linux:

ctrl + d 產生eof輸出,跳出迴圈ctrl + z 程式外部強制結束

14樓:匿名使用者

可以結束,輸入ctrl+z回車。

方法是按住ctrl鍵不放,再按下z鍵盤,螢幕上會出現」^z「的樣子,然後回車。

如果還不行,可以嘗試多輸入幾次ctrl+z回車。這是因為程式有問題,是輸入緩衝問題,迴圈體中有其他輸入語句,其後應該加fflush(stdin);來清除輸入緩衝

15樓:小酒小菜

eof是個常量,值是-1

getchar不會返回-1的。

16樓:匿名使用者

應該是scanf() !=eof吧 ?

17樓:百小度

112312312312312313112312312

c語言中getchar後得到字元不用,不賦給變數,這個字元去

getchar是一個函式,c語言呼叫函式的過程大概如果,首先各種暫存器當前資料入棧,即保護現場,然後引數入棧,接著cs ip指向函式首地址處,開始執行這部分 它會首先pop出壓入棧中的引數,然後執行函式體,最後getchar一定是通過一個變數將讀到的字元返回的。比如 char getchar 這樣,...

C語言與C語言能夠共用嗎C語言和C語言的區別是什麼?

可以共用的。具體取決於使用的編譯器。使用c編譯器 c編譯器是不支援編譯c 的。因為c 有很多c語言標準沒有定義的擴充套件。所以同時存在純c和c 的話是不能通過c編譯器的編譯的。使用c 編譯器c 是c語言的擴充套件延伸,c 設計之初就考慮了完全相容c語言的。所以純c或是混合c c 專案都是可以被c 編...

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...