printf не печатать строку после \n (компилятор GCC)

Смотри мой код

char t[]= "{\n abcdeffgjejgjergnjkengkknkn \n";
printf("%s",t);

char t1[]= "{ abcdeffgjejgjergnjkengkknkn \n aaffdefa";
printf("%s",t1);

Фактический выход:

{
{ abcdeffgjejgjergnjkengkknkn

Ожидаемый результат:

{
 abcdeffgjejgjergnjkengkknkn 
{ abcdeffgjejgjergnjkengkknkn 
 aaffdefa

Кто-нибудь может мне помочь, почему строка не печатается после \n (LF)?

Компилятор - arm-none-eabi

Заголовок библиотеки - Newlib

IDE: MCUExpresso

1 ответ

По умолчанию stdout (где printf пишет) является буферизованной строкой. Это означает, что выходной буфер сбрасывается (фактически записывается) либо при его заполнении, либо при печати новой строки.

Вот почему вторая часть вывода не печатается, потому что этого недостаточно для заполнения буфера, и у вас нет новой строки для очистки буфера.

Вы можете явно очистить себя, позвонив fflush:

printf(...);
fflush(stdout);
Другие вопросы по тегам