scanf输入后程序就直接结束是什么问题

scanf输入后执行的程序就直接结束了,后面的printf也不再打印了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7479850
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:scanf返回值被忽略的原因及其解决方法
  • 除此之外, 这篇博客: 刷题/笔试技巧之——scanf和printf的使用针对不同的输入输出格式中的 一、scanf 的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、格式

          scnaf是输入函数,其格式如下

    scanf("格式控制",变量地址);

        举个例子:其中双引号里面是一个%d,表示通过这个scanf用户需要输入一个int型的变量,将其存放在int型变量n中。

    scanf("%d",&n);

    2、常见的数据类型变量的scanf格式符

    数据类型

    格式符

    举例

    int

    %d

    scanf("%d",&n);

    long long

    %lld

    scanf("%lld",&n);

    float

    %f

    scanf("%f",&fl);

    double

    %lf

    scanf("%lf",&db);

    char

    %c

    scanf("%c",&c);

    字符串(char数组)

    %s

    scanf("%s",str);

    说明:

    • 数组名称本身就是代表了这个数组第一个元素的地址,所以不需要再加取地址运算符。
    • 在scanf中,除了char数组整个输入的情况不需要加&之外,其他变量类型都需要加&。

    3、针对一些输入带空格的说明

    (1)输入整型数字,用空格隔开,即这样输入:3 4      ,在两个%d之间可以不加空格

            因为scanf对除了%c以外的其他格式符(如%d)的输入都是以空白符(即空格、换行等)作为结束判断标志的。

    int a,b;
    scanf("%d%d",&a,&b);

             1)、输入可以以空格隔开输入

            存的结果 

               2)、输入也可以换行输入

                                                                                        存的结果   

     

    (2)在使用%c的使用,他会把空格读入

     

             1)实例1  :%c之间不加空格

    char a,b;
    sacnf("%c%c",&a,&b);

     输入:c和其后空格        输出:a被赋值为字符'c',b为空格  

     

              2)实例2 : %c之间加空格

    char a,b;
    scanf("%c %c",&a,&b);

    输入:     输出: 

     

    总结:因此可以看出%c会把空格按字符读入,其他方式不会。

     

    (3)字符数组使用%s读入的时候以空格跟换行作为读入结束的标志

    char str[20];
    scanf("%s",str);
    printf("%s",str);
    return 0;

          输入:    输出:

    可见是以空格或换行作为读入的结束标志的



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

scanf有没有加&符号?看看代码

用代码快贴出代码