ここで再コーディングしようとしている初心者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
'malloced' ではありません。を宣言するときに割り当てがどのように機能するかわかりません char *nbr = "1DF";
。
よろしくお願いいたします。