c++ - 递归地 intToStr

标签 c++ c arrays recursion

这是学校的任务,我应该编写一个递归函数,将给定的 int 转换为字符串,我知道我很接近,但我无法指出我的代码中缺少的东西,欢迎提示.

void intToStr(unsigned int num, char s[])
{
    if (num < 10)
    {   
        s[0] = '0' + num;
    }

    else
    {
        intToStr(num/10, s);
        s[strlen(s)] = '0' + num%10;
    }
}

编辑:我的问题是该函数仅适用于预先初始化的数组,但如果我让该函数对未初始化的函数起作用,它将不起作用。

最佳答案

除非你的数组是零初始化的,否则你会忘记在修改它时附加一个空终止符。

只需在最后一个字符之后添加即可:

void intToStr(unsigned int num, char s[])
{
    if (num < 10)
    {   
        s[0] = '0' + num;
        s[1] = 0;
    }

    else
    {
        intToStr(num/10, s);
        s[strlen(s)+1] = 0; //you have to do this operation here, before you overwrite the null terminator
        s[strlen(s)] = '0' + num%10;
    }
}

此外,您的函数假设 s 有足够的空间来容纳所有数字,因此您最好确保它确实如此(我认为 INT_MAX 是 10 位数字,所以您至少需要 11 个字符)。

关于c++ - 递归地 intToStr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998741/

相关文章:

c++ - 空容器中 back() 的地址是什么?

c - "Push-to-make"键盘按键的风格使用

c - 从文件读取后打印字符数组时出现问题

javascript - 将2个不同大小的数组合并成json

c++ - 将 vector 传递给某些需要某种大小的数组引用的遗留 API 的任何方法

java - 有人可以帮我用java中的for循环格式化二维数组显示吗

c++ - 允许在模板函数中对浮点类型进行位移的变通方法

c++ - static_allocator 从 std::vector 生成 static_vector

c++ 将 find() 映射到可能的 insert() : how to optimize operations?

我可以使用 cudaMalloc 分配比必要更多的内存以避免重新分配吗?