1

ここで再コーディングしようとしている初心者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";

よろしくお願いいたします。

4

1 に答える 1