Неправильная компиляция 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)
,