gpt4 book ai didi

c - 在 C 中连接字符串的安全方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:26:53 26 4
gpt4 key购买 nike

我需要从两个字符串构造一个文件的路径。我可以使用这个(虽然没有测试):

/* DON'T USE THIS CODE! */
/* cmp means component */
char *path_cmp1 = "/Users/john/";
char *path_cmp2 = "foo/bar.txt";
unsigned len = strlen(path_cmp1);
char *path = path_cmp1;
for (int i = 0; i < strlen(path_cmp2); i++) {
path[len + i] = path_cmp2[i];
}

但我猜这可能会导致内存损坏。是否有更好的方法来执行此操作,或者标准库中是否有相应的函数?

最佳答案

#include <stdlib.h>
#include <string.h>

char *join(const char* s1, const char* s2)
{
char* result = malloc(strlen(s1) + strlen(s2) + 1);

if (result) // thanks @pmg
{
strcpy(result, s1);
strcat(result, s2);
}

return result;
}

这很简单,可以就地编写,尤其是当您有多个字符串要连接时。

请注意,这些函数返回它们的目标参数,因此您可以这样写

char* result = malloc(strlen(s1) + strlen(s2) + 1);
assert(result);
strcat(strcpy(result, s1), s2);

但这可读性较差。

关于c - 在 C 中连接字符串的安全方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com