linux中getchar函数用法,linux getchar函数使用
1 函數(shù)介紹
1)? 函數(shù)原型
int??? getchar(void);
2)? 函數(shù)功能
從stdin中讀取一個字符。
3)? 返回值
返回讀取字符的ASCII值或者EOF字符或者出錯值。
4)? 頭文件
#include
2 函數(shù)使用
2.1 getchar函數(shù)的特點
Linux下編寫的一個例子:
#include
int main(void)
{
char ch;
int num;
num = 0;
printf("input your strings:\n");
while( (ch = getchar()) != '\n'){
printf("%c ", ch);
num++;
}
printf("\nThe string length is %d\n", num);
return 0;
}
編譯程序:gcc??????? –Wall??????? getchar.c????????? –o???? getchar
運行程序:./getchar? [回車]
//提示:當程序運行到while循環(huán)中的getchar時,界面等待用戶輸入字符,直到回車出現(xiàn)
input your strings:
輸入字符串:hello getchar
在輸入這段字符串的過程中getchar函數(shù)沒有發(fā)生從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:~$
由程序執(zhí)行過程及結果可推理getchar在等待用戶輸入時有兩個特征:
1)?????? getchar沒有立即讀從鍵盤敲進來的字符,而是等用戶按下回車之后再開始讀字符。
2)?????? getchar每次只讀取一個字符,如果程序中不采用循環(huán)而只設置一個getchar()語句,則getchar只讀取輸入字符串的首個字符,其余字符依然留在緩存區(qū)中(若將程序的while循環(huán)去掉只輸出第一個字符)。
2.2 getchar讀取回車字符么?
現(xiàn)將以上程序的while( (ch = getchar()) != '\n')改為while( (ch = getchar()) != 'n')其余部分保持不變。重新編譯并運行程序,輸入字符串:hello[回車]
得第一次運行結果
當程序首次執(zhí)行到while中的getchar時,getchar函數(shù)等待用戶的輸入,getchar函數(shù)一直等待用戶輸入,當用戶按下回車表示用戶輸入完畢,getchar開始逐個讀取輸入的字符串,將用戶輸入的所有字符讀取完畢后(因為while的條件為真),再次等待用戶的輸入:
此次輸入字符’n’,注意輸入字符’n’時的位置,為什么不是在o后面呢,而是換了一行而且相隔了一個空格呢?其實是因為上一次getchar讀了一個回車,并被輸出到了界面之上使字符界面得以換了行。輸入字符’n’沒有按回車之前getchar函數(shù)是不會發(fā)生讀操作的,當在輸入字符’n’后按下回車后程序就會結束(或者在輸入字符’n’后再輸入其它的字符后再按下會車,程序依然將會結束,只是字符’n’后面的字符不會被getchar函數(shù)讀取,因為while循環(huán)的條件已經(jīng)為假)并得到以下輸出界面
String輸入字符串的長度為6在一次表明getchar讀取了用戶輸入的回車。字符’n’雖然被讀取,但是不會被計數(shù),因為此時while的條件為假了唄。
3 額外總結
函數(shù)本身的特性與語句條件限制兩者各自帶來的作用需要分清楚。
Note Over。
總結
以上是生活随笔為你收集整理的linux中getchar函数用法,linux getchar函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《隐私保护周三见》86问 | 交流群互动
- 下一篇: tornado 学习笔记7 Reques