【发布时间】:2015-01-12 15:06:33
【问题描述】:
我想使用返回结果字符串的函数连接两个字符串。它会是这样的:
char *String_Concat (char *String_1, char *String_2)
{
char *StringResult;
//memmove String_1 to StringResult
//memmove String_2 to StringResult
return StringResult;
}
我想知道这是否是一种好方法,因为我对内存管理知之甚少。 StringResult 没有定义的长度,我不确定两次 memmove 操作后会发生什么。
我想StringResult会被函数本身清理掉,因为我不使用malloc(),对吗?
【问题讨论】:
-
但是你必须使用
malloc!您还可以将字符串复制到哪里? -
memmove不是为了那个,它是为了重叠的内存块,你应该使用memcpy。 -
但是 memcpy() 不能很好地处理重叠。有那个空字符。
-
@CaTx 与重叠无关。
-
您需要有一个足够大的缓冲区来保存结果,使用 malloc 或传入一个足够大的缓冲区是您的最佳选择。以 strcat 函数为例。您可以将第一个字符串 strcpy 到一个足够大的缓冲区中,然后将第二个字符串 strcat 到它。
标签: c string string-concatenation memmove