linux C getchar函式使用 筆記

2021-06-16 12:40:28 字數 1777 閱讀 4750

1)函式原型

int    getchar(void); 2)

函式功能

從stdin中讀取乙個字元。 3)

返回值

返回讀取字元的ascii值或者eof字元或者出錯值。 4)

標頭檔案

#include

linux下編寫的乙個例子:

#include int main(void)

printf("\nthe string length is %d\n", num);

return 0;

}

編譯程式:gcc        –wall        getchar.c          –o     getchar

執行程式:./getchar  [回車]

input your strings:

輸入字串:hello getchar

在輸入這段字串的過程中getchar函式沒有發生從stdin讀取字元的操作(因為沒有任何的字元輸出),當在輸入字串後按下回車後介面輸出情況如下:

input your strings:

hello getchar

h e l l o   g e t c h a r

the string length is 13

misskissc@monday:~$

由程式執行過程及結果可推理getchar在等待使用者輸入時有兩個特徵: 1)

getchar沒有立即讀從鍵盤敲進來的字元,而是等使用者按下回車之後再開始讀字元。

2)getchar每次只讀取乙個字元,如果程式中不採用迴圈而只設定乙個getchar()語句,則getchar只讀取輸入字串的首個字元,其餘字元依然留在快取區中(若將程式的while迴圈去掉只輸出第乙個字元)。

現將以上程式的while( (ch = getchar()) != '\n')改為while( (ch = getchar()) != 'n')其餘部分保持不變。重新編譯並執行程式,輸入字串:hello[回車]

得第一次執行結果

當程式首次執行到while中的getchar時,getchar函式等待使用者的輸入,getchar函式一直等待使用者輸入,當使用者按下回車表示使用者輸入完畢,getchar開始逐個讀取輸入的字串,將使用者輸入的所有字元讀取完畢後(因為while的條件為真),再次等待使用者的輸入:

此次輸入字元』n』,注意輸入字元』n』時的位置,為什麼不是在o後面呢,而是換了一行而且相隔了乙個空格呢?其實是因為上一次getchar讀了乙個回車,並被輸出到了介面之上使字元介面得以換了行。輸入字元』n』沒有按回車之前getchar函式是不會發生讀操作的,當在輸入字元』n』後按下回車後程式就會結束(或者在輸入字元』n』後再輸入其它的字元後再按下會車,程式依然將會結束,只是字元』n』後面的字元不會被getchar函式讀取,因為while迴圈的條件已經為假)並得到以下輸出介面

string輸入字串的長度為6在一次表明getchar讀取了使用者輸入的回車。字元』n』雖然被讀取,但是不會被計數,因為此時while的條件為假了唄。

函式本身的特性與語句條件限制兩者各自帶來的作用需要分清楚。

函式基礎 匿名函式,函式,箭頭函式,立即執行函式

doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title document title head body body ...

函式 常見函式

def fib n if n 1 return 1if n 2 return 1return fib n 1 fib n 2 def hannuo n,a,b,c n 表示有n個盤子 a 代表第乙個塔,開始的塔 b 代表第二個塔,過渡塔 c 代表第三個塔,目標塔 d.在 中n 2,這個分支可以不要,...

Lua 函式 函式

在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...