美文网首页
如何在C语言解决printf与scanf先后执行的问题

如何在C语言解决printf与scanf先后执行的问题

作者: 爱学习的蹭蹭 | 来源:发表于2023-10-09 23:04 被阅读0次

    如何在C语言解决printf与scanf先后执行的问题

    解决方法用

    fflush(stdout);
    

    我们前面有一个scanf函数,会把空白符跟换行符忽略并放入缓冲区,到了第二个scanf函数就会执行 而scanf遇到换行符就会停止,所以就会导致成这种结果,所以我们最好清除掉缓冲区内的数据, 在第一个scanf读取完毕后,记得用清除缓冲区函数把未读取的空白符和换行符丢掉,可以用getchar也可以用setbuf(stdin, NULL);函数,都可以

    代码案例

    #include "stdio.h"
    
    void main() {
        printf("回车输入两个数字进行相加: \n");
    
        //此行代码是解决先执行printf再去执行scanf打印.
        fflush(stdout);
        int num1, num2;
    
        //定义的是一个字符串,取值的时候就要用 %s
        char username[100];
    
        /**
         * 第一个 scanf
         */
    
        int result = scanf("%d%d", &num1, &num2);
        if (result != 2) {
            printf("Invalid input!\n");
            return;  // return with error code
        }
        int sum = num1 + num2;
        printf("求和: %d + %d  = %d \n\n", num1, num2, sum);
    
        /**
        * 第二个 scanf
        */
    
        //解决空白顺序输入打印问题.
        setbuf(stdin, NULL);
        printf("请输入一个用户名\n");
    
        fflush(stdout);
        scanf("%s",username);
        printf("用户名为: %s\n\n", username);
    
    
        //----------------------------
        setbuf(stdin, NULL);
    
        char check_db;
        printf("请输入条件进行选择数据库(a是Book数据库,b是Store数据库,c是Good数据库): \n");
        //解决先后顺序
        fflush(stdout);
    
    
        /**
        * 第三个 scanf
        */
        scanf("%c",&check_db);
    
        switch (check_db) {
            //case必须常量,不能是变量值.定义一个char a='a'在此在case a就会报错
            case 'a':
                printf("当前数据库是 Book \n");
                break;
            case 'b':
                printf("当前数据库是 Store \n");
                break;
            case 'c':
                printf("当前数据库是 Good \n");
                break;
            default:
                printf("找不到对应数据库 \n");
        }
    }
    
    

    总结

    C的初学者,仅供个人参考,不做详解,个人学习笔记,可以供任何人批评指导。_,学习都是按个人方式去学习。

    相关文章

      网友评论

          本文标题:如何在C语言解决printf与scanf先后执行的问题

          本文链接:https://www.haomeiwen.com/subject/abhwbdtx.html