猿问

在scanf()问题之前的C / C ++ printf()

我正在使用Eclipse来编写C / C ++代码,而我正在努力解决可能非常简单的问题。在我下面的代码中,我使用printf()和之后scanf()。Althougth printf是在scanf()输出不同之前编写的。我能在这里找到类似问题的东西。但我无法解决它。有任何想法吗?


码:


#include <stdio.h>


int main()

{

    int myvariable;


    printf("Enter a number:");

    scanf("%d", &myvariable);

    printf("%d", myvariable);


    return 0;

}

预期产量:


Enter a number:1

1

相反,我得到:


1

Enter a number:1


慕桂英3389331
浏览 624回答 3
3回答

DIEA

您的输出正在缓冲。你有4个选择:显式刷新fflush 每次写入从缓冲区获利后仍然明确强制执行所需的行为/显示。fflush( stdout );缓冲区只有缓冲区当你知道只打印完整的线条就足够了setlinebuf(stdout);禁用缓冲区setbuf(stdout, NULL);通过它提供的选项菜单在控制台中禁用缓冲例子:这是您的选项1的代码:#include <stdio.h>int main() {&nbsp; &nbsp; int myvariable;&nbsp; &nbsp; printf("Enter a number:");&nbsp; &nbsp; fflush( stdout );&nbsp; &nbsp; scanf("%d", &myvariable);&nbsp; &nbsp; printf("%d", myvariable);&nbsp; &nbsp; fflush( stdout );&nbsp; &nbsp; return 0;}这是2:#include <stdio.h>int main() {&nbsp; &nbsp; int myvariable;&nbsp; &nbsp; setlinebuf(stdout);&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; printf("Enter a number:");&nbsp; &nbsp; scanf("%d", &myvariable);&nbsp; &nbsp; printf("%d", myvariable);&nbsp; &nbsp; return 0;}和3:#include <stdio.h>int main() {&nbsp; &nbsp; int myvariable;&nbsp; &nbsp; setbuf(stdout, NULL);&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; printf("Enter a number:");&nbsp; &nbsp; scanf("%d", &myvariable);&nbsp; &nbsp; printf("%d", myvariable);&nbsp; &nbsp; return 0;}
随时随地看视频慕课网APP
我要回答