三种用法:
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));
输出各种数据类型的字节长度。