Вам необходимо явно очистить ваш выходной поток. Когда вывод вашей программы перенаправляется (например, в файл или на вход другой программы, как в этом случае), он периодически очищается только тогда, когда буфер вывода (обычно 4–64 КБ или около того) заполняется.
Чтобы сбросить стандартный вывод, просто позвоните fflush(3)
:
if((l%30) == 0) {
printf("\n");
fflush(stdout);
}
Обратите внимание, что когда вывод идет на терминал (например, если вы только что запустили свою программу в обычном режиме), то по умолчанию это строковый буфер : каждый раз, когда вы печатаете новую строку, вывод сбрасывается , Это значительно облегчает написание интерактивных программ, но снижает производительность неинтерактивных программ. Чем чаще вы выполняете сброс, тем медленнее работает ваша программа, поэтому вы должны выполнять сброс только при необходимости, например, после записи одного длинного связного набора данных, но перед выполнением длительной интенсивной задачи.