printf не печатать строку после \ n (компилятор GCC) - PullRequest
0 голосов
/ 30 октября 2018

см. Мой код

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 Ответ

0 голосов
/ 30 октября 2018

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

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

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

printf(...);
fflush(stdout);
...