【发布时间】:2021-05-23 05:54:48
【问题描述】:
新手试图在这里重新编码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"; 时分配是如何工作的。
提前感谢您的帮助!
【问题讨论】: