gpt4 book ai didi

导致段错误的 Char *strcat 实现

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

char *strcat(char*dest, char*src) {
while (dest != '\0') {
*dest++;
}
while (src != '\0') {
*dest++ = *src++;
}
return dest;
}

我一直在 *dest++ = *src++ 行遇到段错误。关于如何解决问题的任何想法?

最佳答案

你的代码有4个问题:

  • 您正在比较指向空字符的指针,而不是比较它们指向的字符。由于指针在变为 0 之前需要递增很多次,如果有的话,您正在读取和/或写入超出缓冲区末尾的内容,在此之前从/到无效内存,因此发生崩溃。<
  • 您不会以 null 终止目标字符串。
  • 您返回指向目标字符串末尾的指针,而不是原始目标字符串。这可能是一个有用的 API,但您应该为此使用不同的名称。
  • src 指针应声明为 const char * 以符合此函数的标准声明并允许将指向常量字符串的指针作为源传递。

这是更正后的版本:

char *strcat(char *dest, const char *src) {
char *saved = dest;
while (*dest != '\0') {
dest++;
}
while ((*dest++ = *src++) != '\0') {
continue;
}
return saved;
}

关于导致段错误的 Char *strcat 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845417/

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