C I';我正在尝试创建一个函数,该函数将整数转换为不返回字符串的字符串。我怎样才能解决这个问题?

C I';我正在尝试创建一个函数,该函数将整数转换为不返回字符串的字符串。我怎样才能解决这个问题?,c,function,return-value,C,Function,Return Value,我正在尝试用这段代码将整数转换成字符串 它正在打印值,但没有向调用函数返回任何内容 char* itoa(int num, int num_len) { char str[num_len+2]; int i; //if the num is 0 if(num == 0) strcpy(str, "0"); //if the num is negetive then we append a '-' sign at the beginning

我正在尝试用这段代码将整数转换成字符串 它正在打印值,但没有向调用函数返回任何内容

char* itoa(int num, int num_len)
{
    char str[num_len+2];
    int i;
    //if the num is 0
    if(num == 0)
        strcpy(str, "0");
    //if the num is negetive then we append a '-' sign at the beginning
    //and put '\0' at (num_len+1)th position 
    else if(num < 0)
    {
        num *= -1;
        str[num_len+1] = '\0';
        str[0] = '-';
        i = num_len+1;
    }
    //we put '\0' (num_len)th position i.e before the last position
    else
    {
        str[num_len] = '\0';
        i = num_len;
    } 

    for(;num>0;num/=10,i--)
    {
        str[i] = num%10 + '0';
        printf("%c ",str[i]);//for debugging
    }

    return str;
}
char*itoa(int num,int num_len)
{
字符str[num_len+2];
int i;
//如果num为0
如果(num==0)
strcpy(str,“0”);
//如果num是负数,那么我们在开头加上一个“-”号
//并将“\0”放在第(num_len+1)位
else if(num<0)
{
num*=-1;
str[num_len+1]='\0';
str[0]='-';
i=num_len+1;
}
//我们将“\0”(num_len)放在第四个位置,即在最后一个位置之前
其他的
{
str[num_len]='\0';
i=数量;
} 
对于(;num>0;num/=10,i--)
{
str[i]=num%10+'0';
printf(“%c”,str[i]);//用于调试
}
返回str;
}

我刚忘了那条规则。多谢各位

char* itoa(int num, int num_len,char* str)
{
    int i;
    str = (char*)malloc((num_len + 2)*sizeof(char)); 
    if(num == 0)
        strcpy(str, "0");
    else if(num < 0)
    {
        num *= -1;
        str[num_len+1] = '\0';
        str[0] = '-';
        i = num_len;
    }
    else
    {
        str[num_len] = '\0';
        i = num_len-1;
    } 

    for(;num>0;num/=10,i--)
    {
        str[i] = num%10 + '0';
        printf("%c ",str[i]);
    }

    return str;
}
char*itoa(int-num,int-num\u-len,char*str)
{
int i;
str=(char*)malloc((num_len+2)*sizeof(char));
如果(num==0)
strcpy(str,“0”);
else if(num<0)
{
num*=-1;
str[num_len+1]='\0';
str[0]='-';
i=数量;
}
其他的
{
str[num_len]='\0';
i=num_len-1;
} 
对于(;num>0;num/=10,i--)
{
str[i]=num%10+'0';
printf(“%c”,str[i]);
}
返回str;
}

您正在寻找此选项,这是否回答了您的问题?将
str
作为参数传递有什么意义?它按值传递,并立即用
malloc
结果覆盖。当
num\u len
太小时,缓冲区溢出,当它太大时,字符串前面会有未初始化的垃圾。调用方如何知道正确的值?如果调用者能找到答案,为什么这个函数不能这样做,这样就可以消除这些错误?我传递的是一个字符串变量(char*)的地址,该变量在调用函数中声明,但没有分配任何空间,而是动态地分配被调用函数中的空间。如果我不这样做,那么调用函数就不会得到返回的值无论您为
str传递什么,都会立即被覆盖,因此函数不使用输入值,并且使用按值调用语义,它不会作为输出值。