代码不要求输入字符

标签 c stdin fflush

#include "stdio.h"
#include "stdlib.h"

int main() {

    int  a = 10;
    float f;
    double d;
    char k = 'X';

    scanf("%d", &a);
    printf("%d\n", a);


    scanf("%f", &f);
    printf("%f\n", f);

    scanf("%lf" , &d);
    printf("%lf\n", d);

    fflush(stdin);

    scanf("%c",&k);
    printf("%c\n",k);



    return 0;
}

当我执行代码时,我只能输入数据,直到输入 double 值,然后程序退出而不要求另一个输入。有人可以解释一下这是怎么回事吗?我一直在查看在线教程,并且相同的代码适用于它们!

这是我执行程序时得到的结果:

   21
   21
   333.264765
   333.264771
   2317.23
   2317.230000


   Program ended with exit code: 0

最佳答案

fflush通常用于刷新输出缓冲区(输出流)。 fflush(stdin) 可能会导致未定义的行为。并非所有编译器都支持此操作。 This link may help

关于代码不要求输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45476480/

相关文章:

c++ - 来自 2 个指针的组合缓冲区,无需复制

c - 强制 doxygen 模块以小写字母开头

c++ - 什么时候刷新 FILE?

C: Stdin - 删除多余数据

c - C 中的字符串比较

c - 如何从系统调用号获取 Linux 系统调用名称?

python - 强制输入()从不同的线程读取换行符并向前执行

visual-studio-code - 如何在 Visual Studio Code 任务中使用标准输入/标准输出重定向?

C:从标准输入扫描

c - 为什么我的 fflush 不起作用?跳过循环中询问字符串