三种用法:
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));
输出各种数据类型的字节长度。
本文来自作者[雁兰]投稿,不代表华瑞号立场,如若转载,请注明出处:https://www.huaruijixie.net/huarui/1578.html
评论列表(3条)
我是华瑞号的签约作者“雁兰”
本文概览:三种用法:1、从缓冲区读走一个字符,相当于清除缓冲区?2、前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加...
文章不错《getchar用法》内容很有帮助