weixin_51187775
weixin_51187775
2021-04-03 23:33
采纳率: 100%
浏览 21

scanf_s("%c",&a,1)在while中第一次正常输入,但第二次自动赋值位‘\n’

#include <stdio.h>

int main()
{
    int b=1;
    char a;
    while (b)
    {
        printf("what happen\n");
        scanf_s("%c", &a,1);
        switch (a)
        {
        case 'A':printf("aaa"); break;
        case 'B':printf("sss"); break;
        case'C':printf("ddd"); b = 0; break;
        }
    }
}
在这个代码中第一次输入a的值正常,但在while循环到第二次时无法输入a的值

用断点去查看发现第二次a的值自动变为‘\n’

有没有大佬教一下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_46523755
    正在学C++ 2021-04-03 23:37
    已采纳

    因为你获取的是字符,第一次你控制台输入字符,然后按“回车”,这是编译器就把回车符号获取到下一次的scanf里面了。你可以scanf();后面跟一个getchar(); 就行,它把回车获取了,你就正常获取字符了。

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-04-04 21:20

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论

相关推荐