0

查看我的代码

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

4

1 回答 1

0

默认情况下stdoutprintf写入的地方)是line buffered。这意味着当输出缓冲区已满或打印换行符时,输出缓冲区将被刷新(实际写入)。

这就是为什么不打印输出的第二部分的原因,因为它不足以填充缓冲区并且您没有换行符来刷新缓冲区。

您可以通过调用显式自己刷新fflush

printf(...);
fflush(stdout);
于 2018-10-30T09:50:35.953 回答