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會去預設執行改位址儲存的...