gpt4 book ai didi

c++ - 递归地连接以 null 结尾的字符串

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

我正在发明需要分析 C++ 代码的面试问题,这些代码使用指针和递归做一些简单的事情。我尝试以递归方式编写 strcat():

size_t mystrlen( const char* str )
{
if( *str == 0 ) {
return 0;
}
return 1 + mystrlen( str + 1 );
}

void mystrcpy( char* to, const char* from )
{
if( ( *to = *from ) == 0 ) {
return;
}
mystrcpy( to + 1, from + 1 );
}

void mystrcat( char* to, const char* from )
{
mystrcpy( to + mystrlen( to ), from );
}

我在这里不喜欢的是我有三个函数,而我的 strcat() 不是很递归 - 它只调用另外两个函数一次。有没有一种方法可以以某种方式重写它以减少增加递归使用的函数数量,同时又不会牺牲太多代码简洁性?

最佳答案

这是我的例子(优点是它只有一个递归调用):

char * mystrcat(char *dest, const char *src){
if(*dest == 0){
if(*src == 0) // end of recursion cond
return dest;
*dest = *src++; // actual copy
dest[1]=0; // zero out dest buf
}
mystrcat(dest+1,src); // advance one char
return dest;
}

这是粗略的测试代码:

main(){
char c[]={'a',0,'b','c',0};
//char c[]={0,'b','c',0};
mystrcat(c,"xy");
//mystrcat(c,"");
puts(c);
}

关于c++ - 递归地连接以 null 结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845474/

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