(1)发现问题
在使用scanf函数时,连续使用两次scanf,如果不在缓存区做处理,你的第二个scanf将会被略过。如下:
#include<stdio.h>
int main()
{
char a1,a2;
char b1;
printf("输入一个小写字母\n");
scanf("%c",&a1);
a2 = a1 - 32;
printf("其大写字母为%c\n", a2);
printf("输入一个大写字母\n");
scanf("%c",&b1);
b1= b1 +32;
printf("其小写字母为%c\n",b1);
}
你会发现这个第二个scanf突然被略过;
(2)解决问题
1.使用getchar()解决;
而后我才在笔记中找到相关题目,他的第一个scanf中有个回车还带在缓冲区中,会影响第二个scanf, 所以在第一个scanf后面加个getchar()可使第二个scanf不被略过
//这个知识点是,在b站的c语言编程学习,这个up主的c语言入门中,第7节分支和循环2第18分种有出现
2.当然,你也可以使用while((ch=getcahr())!='\n'){,}代替getchar(),使其看起来更加美观。
3.相关的scanf后,有你想要用的getcahr(),也会发生以上问题,所以你也可以用上述方法解决。
//希望我犯过的错误,有需要解决的可以通过我得文章有所帮助,谢谢!