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);