getchar是如何工作的

2021-08-27 04:08:57 字數 1929 閱讀 8817

printf("i am here!\n");

char a=0;

a=getchar();

printf("first input!\n");

printf("%c\n",a);

a=getchar();

printf("second input!\n");

printf("%ci am here!\n",a);

我們輸入:1回車,執行結果如下:

i am here!

1first input!

1second input!

i am here!

結論:shell在按下回車鍵時輸入停止,getchar從標準緩衝區中讀入字元,並且回車鍵被讀入標準輸入緩衝區。

注:製表符和空格也可以讀入,這裡不做實驗。

最後一行**改為:

printf("%di am here!\n",a);
我們輸入:1回車,執行結果如下:

i am here!

1first input!

1second input!

10i am here!

說明getchar得到的是換行符:『\n』。

因為程式從輸入裝置得到的資料都會先存到shell的標準輸入緩衝區中,所以可以知道按下回車鍵shell的標準緩衝輸入區得到的是換行符:『\n』。

這個與從檔案中輸入資料不同,這裡不做討論。

printf("i am here!\n");

char a=0;

a=getchar();

printf("first input!\n");

printf("%c\n",a);

scanf("%c",&a);

printf("second input!\n");

printf("%di am here!\n",a);

scanf從也是從緩衝區中讀入的,實驗結果相同:

i am here!

1first input!

1second input!

10i am here!

但是非緩衝輸入呢?我們看下面的**:

#include #include int main()
我們輸入:1回車,執行結果如下:

結論:非緩衝輸入下,回車鍵得到的是:'\r'。

這裡我們可以先討論一下在檔案中換行到底是什麼樣子的。

首先我們新建乙個文字文件,預設是ansi編碼的,也就是乙個中文字元2位元組,乙個英文本元1位元組,隨便輸入一些內容。注意第二行我沒有輸入回車鍵。

那麼問題是fgetc讀取換行處時讀到的是什麼?

我們做下面的乙個程式來演示這個過程:

那個"10"對應的是『\n』,最後的-1是巨集eof,所以fgetc讀到的是換行符『\n』。

其實水平製表符『\t』也會被讀到,這裡不做演示。

當然我們也要考慮一下字串的輸入與輸出,下一次我會在做實驗。

getchar函式工作原理

函式原型 int getchar void 使用者輸入一列字元後,回車 回車字元也在緩衝區中 getchar 是就開始從鍵盤緩衝區裡面讀資料 鍵盤緩衝區應該是個佇列儲存結構,先進先出 然後返回ascii碼,如失敗,一般返回 1,最後顯示在螢幕上,但是每次只能從鍵盤緩衝區讀乙個字元,然後返回乙個字元,...

SSL是如何工作的

金鑰密碼系統介紹 這篇文章向大家闡述了netscape公司是如何使用rsa的公用金鑰密碼系統來實現網際網路安全的。netscape的安全套接層的實現就利用了這篇文章中所討論的技術。rsa的公用金鑰密碼系統廣泛地應用於計算機工業的認證和加密方面。netscape得到rsa資料安全公司的許可可以使用公用...

BIOS是如何工作的

啟動bios 按下電源後,裝置加電,cpu會進入實模式執行,並強制設定cs和ip暫存器的值 cs 0xffff ip 0x0000或者cs 0xf000 ip 0xfff0,沒有進行驗證 則cs ip的實體地址即為0xffff0 這個位址即為bios的入口位址,則加電後cpu會去預設執行改位址儲存的...