int main() {
Employee *array[SIZE]; //Employee is a typedef struct --includes char *name, DATE *dateOfBirth, DATE is also a typedef struct, has 3 int fields month, day, year,`
fillArray(array, &count, fpin1, fpin2);
freeMemory(array, int count);
}
fillArray(Employee *array[], int *count, FILE *fpin1, FILE *fpin2)
char buffer[MAX], buffer2[MAX];
while (fgets(buffer, MAX, fpin1) != NULL && fgets(buffer2, MAX, fpin2) != NULL){
array[*count]->name = (char *) malloc(sizeof(char)*25);
assert(array[*count]->name != NULL);
strncpy(array[*count]->name, buffer, 15);
strncpy(buffer2, temp, 2);
array[*count]->dateOfBirth->day = atoi(temp)
}
該代碼編譯,但保持與分段錯誤失敗,它似乎失敗在我的fgets?或我的malloc,我做錯了什麼?我似乎無法弄清楚。帶有可能指向malloc分配字段的struct字段的常量指針數組?
而且你會如何去在
freeMemory(Employee *array[], int count)
函數釋放該內存?
我建議分離'malloc'和分配。兩者都可以導致'segfault',因爲您在同一行中有一個數組訪問權限。另外爲什麼不爲了調試而在這裏和那裏放置一些'printf'? – julkiewicz 2011-04-09 18:51:34
'count'是什麼? – Muggen 2011-04-09 19:00:08
有很多printf語句遍佈它,但我仍然很困難......它會在一段時間後死亡 - 這是沒有意義的,因爲它只是一個fgets函數,如果我有一些如何設法經過malloc之後它會發生故障。如果我註釋掉malloc並讓它做一些簡單的事情(將一個int放入結構體的一個字段中),它最終會通過文件,然後再次執行段錯誤。 – Wilson11 2011-04-09 19:02:04