Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 代码为';不要要求输入字符_C_Stdin_Fflush - Fatal编程技术网

C 代码为';不要要求输入字符

C 代码为';不要要求输入字符,c,stdin,fflush,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("

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

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

#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;
}

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

你使用C还是C++?<代码> FFLUW(STDIN);
在标准C.Jodag中是未定义的行为。我正在使用CThis
fflush(stdin)
在许多低质量的教程中仍然建议使用无意义。很好,你来这里是为了学习不要那样做;)您可能还想阅读我的。
scanf(“%c”、&k);-->scanf(“%c”和“&k”)
如果不使用fflush(stdin)@KartikGupta在
%c
之前添加空格,我可以做些什么来使代码正常工作,如中所示。“可能会导致未定义的行为。”
   21
   21
   333.264765
   333.264771
   2317.23
   2317.230000


   Program ended with exit code: 0