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編寫的函式同樣可以返...