三種用法:
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));
輸出各種數據類型的字節長度。