打印不显示所有字符的大字符串

时间:2013-12-12 13:24:28

标签: c string char printf

我想将多个字符串连接在一起以生成一个足够长的唯一字符串。这是一个示例代码:

 char *s;
 s= strconcat("A big-length string",NULL);
 fprintf(stdout,"%s",s);`

当我尝试打印时,打印的字符串少于实际字符串。 假设strconcat()函数运行良好。 malloc()

我需要s一些空格吗?

此外,当我尝试strlen(s)时,它会向我显示正确的数字,例如1078.只是打印就是问题。

修改 在所有字符串之后,我尝试像这样注入\n来解决问题

s= strconcat("A big-length string","\n",NULL);

1 个答案:

答案 0 :(得分:4)

使用printf / fprintf的输出通常是缓冲的。

如果输出文件连接到终端,则输出是行缓冲的,因此缓冲区将在每个\n之后刷新。

如果输出文件未连接到终端,则输出完全缓冲,因此缓冲区将在满时刷新。典型的缓冲区大小为1kb-8kb。

确保缓冲区被刷新调用:

fflush(stdout);

您可以使用以下命令刷新所有文件缓冲区:

fflush(NULL);