【问题标题】:Scanf executed before printf in EclipseScanf 在 Eclipse 中的 printf 之前执行
【发布时间】:2020-08-13 14:45:58
【问题描述】:

我有以下 C 语言的简单代码:

#include <stdio.h>

int main(){
    printf("Give an integer:\n");
    int x;
    scanf("%d",&x);
    printf("10*%d=%d\n",x,10*x);

    return 0;
}

使用 CodeBlocks IDE 它以正确的顺序执行,但是当我使用 Eclipse IDE 时它会跳转 到 scanf 命令,然后按应有的方式打印消息。谁能解释一下?

提前谢谢你

【问题讨论】:

  • 可能一个环境将stdout 设置为完全缓冲,而不是通常的行缓冲。尝试在 printf() 调用后添加 fflush(stdout); 以强制输出。
  • 谢谢,它成功了。在 CodeBlocks IDE 中没有任何改变,正如我所愿,在 Eclipse 中它按我的意愿工作。
  • 或者,看看您是否可以阻止 IDE 将 stdout 设置为 完全缓冲

标签: c eclipse printing ide scanf


【解决方案1】:

通常stdout 设置为行缓冲。显然,您的一个 IDE 将其设置为 完全缓冲

您可以使用fflush() 强制打印转储关联的缓冲区,例如

printf("hello ");   // works in unbuffered stream
printf("world!\n"); // works in line buffered stream
fflush(stdout);     // works in fully buffered stream

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多