首先看一下我遇到的问题:
希望得到的效果:
错误的效果:
为什么ch2值为空??没有让输入ch2? 换了scanf函数也是一样。
原因是因为getchar()这是在键盘缓冲区读取数据不是从键盘(终端)读取的。 当键盘输入a和回车(回车也是字符),会先被写入到键盘缓冲区,然后getchar()方法从缓冲区读取数据,每次只从缓冲区读取一个字符,剩下的会留下来等下一个getchar()读取。
解决方法:
1:新创建一个字符变量,用于接收getchar()。
2:或者清除缓冲区(fflush(stdin);
rewind(stdin);
)
scanf函数也是同理!!!!
#include "stdio.h"
int main(){
char ch1,ch2,ch3;
scanf("%c",&ch1);
ch3=scanf("%c",&ch3);
printf("ch1=%c\n",ch1);
scanf("%c",&ch2);
printf("ch2=%c\n",ch2);
return 0;
}
补充一下getch()如下
1:getch函数在C语言中使用时需包含的头文件为 conio.h ,应写为#include<conio.h>;
2:getch的功能:从标准输入设备(键盘)读入一个字符,不回显在显示器上.
#include "stdio.h"
#include "conio.h"
int main(){
char ch1,ch2,ch3;
ch1=getch();
printf("ch1=%c\n",ch1);
return 0;
}