【问题标题】:Printing big-length string not showing all chars [closed]打印不显示所有字符的大长度字符串[关闭]
【发布时间】:2013-12-30 22:32:51
【问题描述】:

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

 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);

【问题讨论】:

  • 如果我们可以假设strconcat 函数运行良好,我们也可以假设它完成了内存分配(并且您必须在打印后free(s))。如果您 (a) 不向我们展示关键代码并且 (b) 不提供代码的真实数据,我们如何解决您的问题?
  • strconcat() 不是标准函数。我们确实知道它的作用。你有它的来源,在这里展示吗?你可能是指strcat()
  • strconcat 函数到底是做什么的?
  • 如果strlen 显示正确的长度,则fprintf 是错误的原因。尝试在字符串后添加\n,这可能会有所帮助
  • 您需要发布一个完整的可编译示例来演示该问题,包括main 函数和strconcat 函数。此问题无法以目前的形式回答。

标签: c string char printf


【解决方案1】:

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

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

如果输出文件没有连接到终端,输出是完全缓冲的,所以缓冲区满时会被刷新。典型的缓冲区大小为 1kb-8kb。

确保缓冲区被刷新调用:

fflush(stdout);

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

fflush(NULL);

【讨论】:

    猜你喜欢
    • 2018-08-22
    • 2023-02-15
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多