【发布时间】:2016-07-26 01:10:59
【问题描述】:
我有以下代码连接两个字符串:
char *getConcatString(char *str1, char *str2) {
char *finalString = malloc(1 + strlen(str1) + strlen(str2)); // Needs to be freed by the user after use
if(finalString == NULL)
return NULL;
strcpy(finalString, str1);
strcat(finalString, str2);
return finalString;
}
有没有更安全的方法来做到这一点?就像前任一样。 strncat 和 strncpy? 谢谢
【问题讨论】:
-
我认为
strncat和strncpy是不必要的,因为您已经为这两个字符串保留了足够的空间。不过,您可能需要检查str1和str2是否不为空,特别是如果您不能保证它永远不会为空。否则,我觉得很好。 -
@Idos 由于我们是根据 str1 和 str2 的大小为最终字符串分配内存,所以在 memcpy 中消除了缓冲区溢出,对吗?
-
@ryyker 我已经在函数外释放了 finalString 并且它没有引起任何问题
-
@ryyker 对不起,你完全错了。 malloc'ing 然后返回这样的指针是非常好的。
-
@user3266083 一般来说,这是一种很好的方法,而且您的代码看起来也不错。
标签: c string concatenation strcpy strcat