gpt4 book ai didi

c - 递归strcpy函数

转载 作者:行者123 更新时间:2023-11-30 18:32:14 24 4
gpt4 key购买 nike

#include <stdio.h>
char *strcpy_r(char* s, char* t);

int main()
{
char *s = {"Bob"};
char *t = {"Billy"};
char *ptr;
ptr = strcpy_r(s, t);
printf("%s\n", ptr);

return 0;
}

char* strcpy_r(char* s, char* t)
{
if((*s = *t) != '\0')
strcpy_r(s + 1, t + 1);
return s;
}

我这样做只是为了练习,但是当我编译它时。我从 main 中得到了一个段错误。有人能告诉我是什么原因导致了这个段错误吗?

最佳答案

恭喜,您已在一行内调用了两次未定义行为。

首先,您无法修改字符串文字的内容。因此 strcpy() 调用 "foo" 是错误的。

两个,即使你可以:你正在将一个字符串复制到比该字符串短的缓冲区中。这又是UB。

关于c - 递归strcpy函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517200/

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