getchar用法
- 2021-11-22
三種用法:
1、從緩衝區讀走一個字元,相當於清除緩衝區
2、前面的scanf()在讀取輸入時會在緩衝區中留下一個字元‘\n’(輸入完s[i]的值後按回車鍵所致),所以如果不在此加一個getchar()把這個回車符取走的話,gets()就不會等待從鍵盤鍵入字元,而是會直接取走這個“無用的”回車符,從而導致讀取有誤
3、getchar()是在輸入緩衝區順序讀入一個字元(包括空格、回車和Tab)
錯在getchar() 是從鍵盤讀取一個字元放入緩衝區,然後在取出來,你在輸入某個數或者字元後敲回車其實緩衝區也接受了你的回車了。
可以這麼修改:
char ch;
int key;
printf(“please input key”);
scanf(“%d”,&key);
fflush(stdin);
printf(“please input ming wen\n”);
ch=getchar();
fflush(stdin);
while(ch!=‘\n’)
{
putchar(ch+key);
printf(“\n”);
ch=getchar();
fflush(stdin);
}
加上fflush(stdin);來清空緩衝區
想要程式結束,直接敲回車就可以了。
擴充套件資料:
使用getchar函式還應注意幾個問題:
1、getchar函式只能接受單個字元,輸入數字也按字元處理。輸入多於一個字元時,只接收第一個字元。
2、使用本函式前必須包含檔案“stdio。h”。
3、在TC螢幕下執行含本函式程式時,將退出TC 螢幕進入使用者螢幕等待使用者輸入。輸入完畢再返回TC螢幕。
void main(){
char a,b,c;
printf(“input character a,b,c\n”);
scanf(“%c %c %c”,&a,&b,&c);
printf(“%d,%d,%d\n%c,%c,%c\n”,a,b,c,a-32,b-32,c-32);
}
輸入三個小寫字母
輸出其ASCII碼和對應的大寫字母。
void main(){
int a;
long b;
float f;
double d;
char c;
printf(“%d,%d,%d,%d,%d”,sizeof(a),sizeof(b),sizeof(f)
,sizeof(d),sizeof(c));
輸出各種資料型別的位元組長度。
1、如圖所示,輸入如下命令,定義字元。
2、使用getchar函式獲得輸入字元。
a=getchar();
b=getchar();
c=getchar();
3、使用putchar函式將變數輸出。
putchar(a);
putchar(b);
putchar(c);
putchar(‘\n’);
return 0;
4、點選編譯按鈕,對程式進行編譯。
5、提示無錯誤時,進行程式執行。
6、彈出的介面輸入字元。
7、執行介面如下。完成效果圖。
啊~!!明白了~ 不好意思 上面那個說法沒錯 但是我忘了getchar()的特點 必須要按“回車”鍵才起作用!!! 應該是getch() 不好意思~~~
getchar 的用途是從從標準輸入流讀取一個字元,讀回車符時退出
getchar();永遠只向快取中輸入一個字元。
getchar();的用法:
一種就是清空回車符 這種情況一般發生在在迴圈中涉及到輸入的情況 ,還有一種是某些編譯平臺(IDE)在執行程式時並沒有在程式執行後給人看結果的時間 這時候 在程式最後加上getchar()就能造成程式的暫停 給程式設計師度結果的機會。
注意:
用getchar時,在鍵盤上按一個字元後,要按回車才能讀取進去;用getch時,在鍵盤上按一個字元馬上就被讀取進去,不用按回車,因此可以作為“按任意鍵繼續”的執行語句。
getchar() 是從鍵盤讀取一個字元放入緩衝區
然後在取出來
你在輸入某個數或者字元後 敲回車 其實緩衝區也接受了你的回車了
你可以這麼修改
char ch;
int key;
printf(“please input key”);
scanf(“%d”,&key);
fflush(stdin);
printf(“please input ming wen\n”);
ch=getchar();
fflush(stdin);
while(ch!=‘\n’)
{
putchar(ch+key);
printf(“\n”);
ch=getchar();
fflush(stdin);
}
加上fflush(stdin);來清空緩衝區
想要程式結束 直接敲回車就OK了