Редактировать: Я упростил исходный код.тот же код, другой порядок печати с printf() и write() в разных компиляторах C
Код:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("printf1\n");
write(1, "1 should be after printf\n", 25);
printf("printf2\n");
write(1, "2 should be after printf\n", 25);
return 0;
}
Неожиданный результат на Ideone:
1 should be after printf
2 should be after printf
printf1
printf2
Ожидаемый результат на cs50
printf1
1 should be after printf
printf2
2 should be after printf
Почему порядок вывода отличается?
вы не промывке выводятся после printfs. когда он вспыхнет, зависит от ОС. См. [This] (/ questions/1716296/why-does-printf-not-flush-after-the-call-except-a-newline-is-in-the-format-strin) – Tibrogargan
@ Тиброгарган Спасибо! Вы указываете меня в правильном направлении. – rldyjb