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

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条回答 默认 最新

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

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-04-04 21:20

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

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

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题