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传递什么,都会立即被覆盖,因此函数不使用输入值,并且使用按值调用语义,它不会作为输出值。