如何扫描指向c中结构指针的指针?

时间:2015-02-19 23:23:08

标签: c syntax double-pointer

我一直遇到一个seg错误,我想使用双指针。我有一个指向结构的指针,我不知道如何扫描指向结构的指针的双指针。

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);
}

1 个答案:

答案 0 :(得分:0)

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

应该是

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

此外,fill_garage()可能是一个更清洁的设计 返回Car *,而不是返回void并使用Car **参数来接收返回值..