美文网首页
如何在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语言格式化输入输出

    本文主要介绍一下C语言中printf和scanf两个函数。 printf函数 printf函数被设...

  • C语言_基础

    @(C语言)基于java基础学习C,并不是零基础学习。 hello c 输出 printf 输出 scanf() ...

  • C++ 输入输出(cin 和 cout)

    在 C 语言中,我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在C++ 语言中,C 语言...

  • C语言的基本输入与输出函数

    C语言中最常用最基础的输入输出函数:printf() 和 scanf(); 例子: import

  • 第二章 开始学习C++

    C语言输入和输出(printf scanf...) int main()部分叫函数头 (){}包括的部分叫函数体 ...

  • 06-输入输出函数-指趣学院

    Go语言fmt包实现了类似C语言printf和scanf的格式化I/O, 格式化动作源自C语言但更简单 输出函数 ...

  • C语言学习04.格式化输入输出

    C语言的格式化输入输出靠的是printf和scanf函数,在stdio.h头文件。 格式化输出: Printf具有...

  • Week1

    周一笔记 printf函数 printf函数的格式 scanf函数 类型转换 C语言当中,大类型转换成小类型会丢失...

  • 【C】语言·printf和scanf函数

    printf函数这是在stdio.h中声明的一个函数,因此使用前必须加入#include ,使用它可以向标准输出...

  • Golang标准库——fmt

    fmt包实现了类似C语言printf和scanf的格式化I/O。格式化动作('verb')源自C语言但更简单。Pr...

网友评论

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

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