Scanf выполняется перед printf в Eclipse - PullRequest
1 голос
/ 29 апреля 2020

У меня есть следующий простой код на 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 и затем печатает сообщения, как следует. Кто-нибудь может объяснить это?

Заранее спасибо

1 Ответ

1 голос
/ 29 апреля 2020

Обычно stdout устанавливается на строка в буфере . По-видимому, одна из ваших IDE устанавливает для него значение полностью буферизованное .

. Вы можете принудительно печатать для выгрузки соответствующего буфера с помощью fflush(), например,

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