【发布时间】:2021-10-03 09:37:53
【问题描述】:
我有多个句子目前正在控制台中打印。我必须将它们收集成一个字符串。
部分代码为:
#include <stdio.h>
#include<string.h>
int main()
{
char buffer [100];
sprintf (buffer, "%d plus %d is %d", 5, 3, 5+3);
char *c=buffer;
sprintf (buffer, "and %d minus %d is %d", 6, 3, 6-3);
strcat(c, buffer);
printf ("[%s]",c);
return 0;
return 0;
}
我尝试使用 sprintf 创建格式化字符串,但结果错误。句子的长度和数量不受限制。
我希望上面代码的输出是这样的:
[5 加 3 为 8,6 减 3 为 3]
但它是:
[6 减 3 是 3,6 减 3 是 3]
我需要如何连接它们?此外,句子的长度和数量是无限的。我在使用 malloc 和 realloc 时遇到困难。有人可以帮忙吗?
【问题讨论】:
-
当你可以直接打印缓冲区时,使用char指针并将缓冲区数组分配给它的目的是什么?
-
将数组的地址分配给指针不会复制内容。
-
对于
malloc()和朋友,请发布另一个问题。这是一个不相关的问题。 -
当我不使用char指针直接打印缓冲区时,只存储和打印最后一个spritnf中的字符串。
-
使用两个缓冲区,连接它们并打印它们,而不是使用指针。
标签: c string-concatenation strcpy formatted