Неправильная компиляция MinGW

Я пишу программу на C для назначения, и я хотел бы поработать над ней на моем рабочем столе Windows 10, однако я сталкиваюсь со странной проблемой при использовании MinGW.

Программа, которую я написал, выглядит так:

#include <stdio.h>
int main(){
    //set up variables
    int a, b, c, d;

    //prompt user for integers
    printf("Please enter four different integers:\n");
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &c);
    scanf("%d", &d);

    //return sum
    int sum = a+b+c+d;
    printf("Sum is: %d", sum);

    return 0;
}

Когда я скомпилирую это, результат будет выглядеть так: (где 1, 2, 3 и 4 - введенные числа)

1
2
3
4
Please enter four different integers: 
Sum is: 10

Это, очевидно, не должно происходить, потому что это не в порядке. Чтобы попытаться устранить неполадки, я скомпилировал этот же код, используя GCC, на моем ноутбуке с Arch, и результат выглядел следующим образом: (где 1, 2, 3 и 4 - введенные числа)

Please enter four different integers:
1
2
3
4 
Sum is: 10

Вот как должен выглядеть результат. Я использую Eclipse Mars в качестве IDE на компьютерах с Linux и Windows. Я также попробовал то же самое на своем другом ноутбуке, который загружает Windows 10 и Ubuntu с двумя функциями и имел те же результаты между MinGW и GCC.

Если у кого-то есть идеи, почему MinGW будет так себя вести, я буду очень признателен! Спасибо!

1 ответ

Решение

Различные системы / библиотеки имеют разную эвристику для того, когда очищать вывод буферизованного потока. Чтобы гарантировать, что ваш оператор printf() сбрасывается и выводится на консоль перед чтением с помощью scanf(), вам необходимо чередовать явный вызов fflush(stdout),

Другие вопросы по тегам