我想将多个字符串连接在一起以生成一个足够长的唯一字符串。这是一个示例代码:
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);
答案 0 :(得分:4)
使用printf / fprintf的输出通常是缓冲的。
如果输出文件连接到终端,则输出是行缓冲的,因此缓冲区将在每个\n
之后刷新。
如果输出文件未连接到终端,则输出完全缓冲,因此缓冲区将在满时刷新。典型的缓冲区大小为1kb-8kb。
确保缓冲区被刷新调用:
fflush(stdout);
您可以使用以下命令刷新所有文件缓冲区:
fflush(NULL);