有关如何编写获取 2 个参数的 RECURSIVE 函数的任何想法: 第一个是地址 d(char 的位置)。 第二个是字符串。 该函数将字符串 s 复制到从 d 开始的位置。 该函数返回 d 作为结果! 我们可以在没有 strcpy 的情况下做到这一点吗?
copy_r(char *s, char *d)
{
*d = *s;
if(*s)return copy_r(++s, ++d);
}
哪里错了? (成立 )
放还是有问题!如果位置 d 与已经被 s 占据的某个位置重叠怎么办?
例如这个
strcpy(p1, "abcdefghijklomopqrstuvwqyz"); printf(copy_r(p1, p1+10));不起作用 –
输出应为 klomopqrstuvwqyz
最佳答案
哪里出错了
嗯,没有任何错误,这个代码示例工作正常...我看到的唯一问题是它没有完全按照您的预期工作。您提到您希望它函数返回 d 作为结果
,但您没有让它这样做。
该代码当前采用 s
并将内容复制到 d
中,因此如果您有类似的内容:
char * str = "hello";
char * ptr = malloc(6);
copy_r(str, ptr);
// now ptr has "hello" too
关于c - 如何编写将字符串复制到某个位置的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708497/