void fill_garage(Car** garage, char* cars, int* size)
43 {
44 int i;
45 FILE* file=fopen(cars,"r");
46 fscanf(file,"%d",size);
47 *garage=malloc(sizeof(Car)**size);
48 printf("%d",*size);
49 for(i=0;i<*size;i++)
50 {
51 (*garage)[i].make=malloc(sizeof(char)*MAX_STRING_LEN);
52 (*garage)[i].model=malloc(sizeof(char)*MAX_STRING_LEN);
53 fscanf(file,"%d%s%s%d",(*garage)[i].year,(*garage)[i].make,(*garage)[i].model,(*garage)[i].miles);
54 }
55 fclose(file);
56 }
我得到這段代碼的分段錯誤,gdb返回車庫[i] - >使行是這個原因,但我不明白爲什麼這行會case一個seg故障。使用fscanf和malloc的分段錯誤
'garage =&carsPtr;'應該是'* garage = carsPtr;'。你想告訴調用函數'carsPtr'。 – 2015-02-12 03:31:45
檢查'fscanf'的返回值。檢查'* size'就是你認爲的。你從來沒有將任何內存分配給'carsPtr [i] .model'。 – 2015-02-12 04:31:30
基本上你需要*調試你的代碼*。如果你不能使用調試器,那麼使用'printf'語句來確保程序的每一步都應該如此。 – 2015-02-12 04:31:51