gpt4 book ai didi

使用 memcpy 连接两个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:29 25 4
gpt4 key购买 nike

我正在尝试创建一个连接两个字符串的函数,而无需在 C 中使用 strncat/strcat。我有这个,但它给出了一个段错误。我做错了什么?

char *concat(char *str1, char *str2) {
memcpy(str1 + strlen(str1) - 1, str2, strlen(str2) + 1);
return str1;
}

这不是作业。它适用于 TI-84 Plus CE 的 C 工具链,strncat 在此函数中对我不起作用。 str1 将是一个字符串文字。 str2 将是可变的。

最佳答案

您必须确保 str1 指向一个足够大的内存位置以接收整个结果:

char *concat(char const*str1, char const*str2) {
size_t const l1 = strlen(str1) ;
size_t const l2 = strlen(str2) ;

char* result = malloc(l1 + l2 + 1);
if(!result) return result;
memcpy(result, str1, l1) ;
memcpy(result + l1, str2, l2 + 1);
return result;
}

此外,您应该尽可能多地添加错误检查,至少添加一些 assert(str1) ;断言(str2);...

关于使用 memcpy 连接两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50543073/

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