我一直遇到一个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);
}
答案 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 **
参数来接收返回值..