新手试图在itoa
这里重新编码。我不太确定 itoa 函数是如何工作的,但这是我现在希望我的工作方式:
char *ft_itoa(int nb, char *str)
我希望将 的每个数字nb
转换为要放入的字符*str
。这是我的代码(我不允许使用任何功能,但这write
只会让我在这里调试。
char *ft_itoa(int nb, char *str)
{
int i;
int y;
int nbinit;
int neg;
i = 0;
y = 0;
nbinit = nb;
neg = 0;
if(nb < 0)
{
nb = -nb;
neg = 1;
str[i] = '-';
i++;
}
while(nb / 10 > 0)
{
i++;
nb = nb / 10;
}
if(neg == 1)
nb = -nbinit;
else
nb = nbinit;
while(nb / 10 > 0)
{
y = nb % 10;
str[i] = y + '0';
i--;
nb = nb / 10;
}
str[i] = nb + '0';
return (str);
}
尝试执行此行时,程序将出现段错误:
str[i] = y + '0';
如果我不得不大胆猜测,我会说这是因为在我的主要
int main(void)
{
char *nbr = "1DF";
int nb = 479;
ft_itoa(nb, nbr);
return (0);
}
*nbr
不是“分配的”。我不确定声明时分配是如何工作的 char *nbr = "1DF";
。
在此先感谢您的帮助 !