0
点赞
收藏
分享

微信扫一扫

自己今天写代码遇见的scanf略过问题

(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(),也会发生以上问题,所以你也可以用上述方法解决。

//希望我犯过的错误,有需要解决的可以通过我得文章有所帮助,谢谢!

举报

相关推荐

0 条评论