使用递归函数的长度字符数

Wil*_*ill 0 c++ recursion

我正在尝试创建一个可以计算字符串字符的递归函数,但我不知道为什么我的代码会崩溃我的系统.我没有更多的想法.有什么建议:

long slength (const char ntca[])
{
    int length = 0;

    if (ntca[length] == '\0'){
        return 0;
    }
    else{
        return  slength(ntca)+1;
    }
}
Run Code Online (Sandbox Code Playgroud)

sim*_*onc 6

当前代码slength递归调用相同的缓冲区.这将一直持续到堆栈溢出.

您需要将缓冲区减少一个字符,并为每个递归调用的长度计数加1

return  slength(ntca+1)+1;
//                  ^^
Run Code Online (Sandbox Code Playgroud)