代码猫伯爵
2021-10-05 20:38
采纳率: 100%
浏览 48

关于C语言用scanf同时输入字符串和字符

本人新手 用两个scanf输入字符串和字符
当scanf("%s",a)在scanf("%c",&b)前时 输入字符串后就会跳过输入字符 这是为什么

  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • CSDN专家-link 2021-10-05 20:44
    已采纳

    主要原因是你输入字符串后,必须按回车键才能让程序接收输入字符串,但回车键本身也是个字符,你接着用scanf("%c"输入字符的话,正好回车键当字符被接收了,所以不需要再输入字符了。为了正确输入字符,在scanf("%c"前加一句getchar();就可以了,让它接收回车键即可

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 字符数组输入他会默认读一行数据,你回车后用一个getchar接受回车符再输入下一个数据就好了

    评论
    解决 无用
    打赏 举报
  • 贴一下具体代码?
    理论上如果中间有回车的话是可以正常接受字符的
    在两个scanf之间插入一个getchar,用于消除换行符即可正常读入
    示例代码如下:

    #include <stdio.h>
    #include <string.h>
    int main(int argc, char const *argv[])
    {
        char a[20], b;
        scanf("%s", a);
        getchar();
        scanf("%c", &b);
        printf("%s\n%c", a, b);
    }
    

    img

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题