gpt4 book ai didi

c++ - 递归地 intToStr

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

这是学校的任务,我应该编写一个递归函数,将给定的 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/

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