-1

seg fault が何度も発生するため、ダブル ポインターを使用したいと考えています。構造体へのポインターへのポインターがあり、構造体を指すポインターへの二重ポインターをスキャンする方法がわかりません。

int main(int argc, char* argv[])
{   
    if(argc != 4) // Error checks to make sure for correct number of arguments
    {
        printf("Incorrect number of arguments\n");
        return 0;
    }

    Car* garage69;
    Car** garage = &garage69;

    int length;
    int *size;
    size = &length;

    fill_garage(garage, argv[1], size);

    return 0;
}

void fill_garage(Car** garage, char* cars, int* size)
{
    FILE* input = fopen(cars, "r");

    fscanf(input, "%d", size);

    printf("this is size %d \n", *size);

    *garage = malloc(sizeof(Car)**size);

    int i;

    for(i=0; i<*size; i++)
    {
        (*garage[i])[i].make = malloc(sizeof(char)*MAX_STRING_LEN);
        (*garage[i]).model = malloc(sizeof(char)*MAX_STRING_LEN);
        fscanf(input, "%d %s %s %d", (*garage[i]).year, (*garage[i]).make, 
          (*garage[i]).model, (*garage[i]).miles);

    }

    fclose(input);
}
4

1 に答える 1

0
(*garage[i])[i].make = malloc(sizeof(char)*MAX_STRING_LEN);

おそらくあるはずです

(*garage)[i].make = malloc(sizeof(char)*MAX_STRING_LEN);

また、 returnを使用して戻り値を受け取るよりも、 fill_garage() returnを使用する方がおそらくクリーンな設計になるでしょう..Car *voidCar **

于 2015-02-19T23:52:06.007 に答える