\ n(编译器GCC)后,printf不打印字符串

时间:2018-10-30 09:46:00

标签: gcc printf printf-debugging

查看我的代码

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 :(得分:0)

默认情况下stdout(其中printf写入)是行缓冲。这意味着输出缓冲区已满或打印换行符时,都会刷新(实际写入)。

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

您可以通过调用fflush来明确刷新自己:

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