为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
慕桂英3389331 2019-09-02 11:09:22
我正在使用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:11相反,我得到:1Enter a number:1
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

您的输出正在缓冲。你有4个选择:


显式刷新


fflush 每次写入从缓冲区获利后仍然明确强制执行所需的行为/显示。


fflush( stdout );

缓冲区只有缓冲区


当你知道只打印完整的线条就足够了


setlinebuf(stdout);

禁用缓冲区


setbuf(stdout, NULL);

通过它提供的选项菜单在控制台中禁用缓冲


例子:

这是您的选项1的代码:


#include <stdio.h>

int main() {


    int myvariable;


    printf("Enter a number:");

    fflush( stdout );

    scanf("%d", &myvariable);

    printf("%d", myvariable);

    fflush( stdout );


    return 0;

}

这是2:


#include <stdio.h>

int main() {


    int myvariable;


    setlinebuf(stdout);    


    printf("Enter a number:");

    scanf("%d", &myvariable);

    printf("%d", myvariable);


    return 0;

}

和3:


#include <stdio.h>

int main() {


    int myvariable;


    setbuf(stdout, NULL);     


    printf("Enter a number:");

    scanf("%d", &myvariable);

    printf("%d", myvariable);


    return 0;

}


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信