用递归法将一个整数n转换为字符串

例如,输入123,应输出字符串“123”。n的位数不确定,可以是任意位数的整数

#include <stdio.h>
#include <string.h>
//n是需要转换的数
void trans(int n,char buf[])
{
    int i = 0;
    if(n<10 && n > 0)
    {
        for(i=strlen(buf);i>0;i--)
            buf[i] = buf[i-1];
        buf[0] = '0' + n%10;
        return;
    }else
    {
        for(i=strlen(buf);i>0;i--)
            buf[i] = buf[i-1];
        buf[0] = '0' + n%10;
        trans(n/10,buf);
    }
}

int main()
{
    int v;
    char buf[50]={0}; //必须初始化
    printf("请输入一个数:");
    scanf("%d",&v);
    trans(v,buf);
    printf("转换后字符串:%s\n",buf);
    return 0;
}
#include <stdio.h>
#include <string.h>

void itos(char *str, int n, int index)
{
    if (n == 0)
    {
        *(str + index) = 0;    //结束字符串
        int len = strlen(str) - 1;
        char t;
        for (int ii = 0; ii < len / 2; ii++)    //翻转字符串
        {
            t = str[len - ii];
            str[len - ii] = str[ii];
            str[ii] = t;
        }
        return ;
    }

    *(str + index) = '0' + n % 10;

    itos(str, n / 10, index + 1);//从后往前提取数字

    return ;
}

int main()
{
    int n;
    char str[20];
    scanf("%d", &n);
    itos(str, n, 0);
    
    printf("%s\n", str);

    return 0;
}