有些代码是由于电晕爆发而由我的老师提供的,他没有回答我被困的电子邮件。
他提供的代码是这个
printf("Removing old data in array...");
free(myCities);
myCities = readFromBinFile(&nrOfCitiesAdded);
...
struct city *readFromBinFile(int *nrOfCities){
struct city *temp = NULL;
FILE *fp = fopen("/Users/cul01/Desktop/minTextFil","rb");
if(fp == NULL)
printf("Could not open file\n");
else {
printf("Reading from file...\n");
fread(nrOfCities, sizeof(int), 1, fp);
temp = (struct city*)calloc(*nrOfCities, sizeof(struct city));
if(temp == NULL)
printf("Error allocating memory");
else
fread(temp, sizeof(struct city), *nrOfCities, fp);
}
fclose(fp);
return temp;
}
现在一切正常,但是当我添加一个城市,然后尝试加载一个不存在的文件,然后添加另一个城市,然后打印出来时,我得到了类似9e 10267 iles\Common manch
的内容,但另一个城市很好只是第一个被卡住的。如果需要更多代码,我很乐意提供。
释放readFromBinFile()
之前先呼叫myCities
。如果返回NULL
,则保留旧值。
int tempCitiesAdded;
struct city *citiesTemp = readFromBinFile(&tempCitiesAdded);
if (citiesTemp) {
free(myCities);
myCities = citiesTemp;
nrOfCitiesAdded = tempCitiesAdded;
}