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