3
當我將文件中的信息讀入電話簿程序並嘗試通過聯繫人列表查看時,第一次嘗試查看該列表時空白,但如果您選擇再次查看,文件中的內容就在那裏。即使更加狡猾,當您通過程序添加名稱時,名稱會與文件數據一起顯示一次,但如果您再次檢查該名稱,則新名稱將消失。如果您刪除名稱,則會將其刪除一次,但如果再次查看聯繫人列表,名稱會再次出現。我很茫然。這是我的閱讀功能和我的打印功能。閱讀文件時出現奇怪的結果
void file2(fr*friends ,int* counter, int i,char buffer[],FILE*read,char user_entry3[])
{
int len;
fr temp;
*counter=0;
i=0;
fseek(read, 0, SEEK_SET);
while (fgets(buffer, 80, read) != NULL) {
temp.First_Name=malloc(36); //was j+1
temp.Last_Name=malloc(36); //strlen(buffer));
sscanf(buffer,"%s %s",temp.First_Name,temp.Last_Name);
fgets(buffer, 20, read);
len=strlen(buffer);
if(buffer[len-1]=='\n')
buffer[len-1]='\0';
temp.home=malloc(20); //len);
strcpy(temp.home, buffer);
fgets(buffer, 20, read);
len=strlen(buffer);
if(buffer[len-1]=='\n')
buffer[len-1]='\0';
temp.cell=malloc(20); //len);
strcpy(temp.cell, buffer);
friends[i].First_Name=malloc(MAXNAME);
friends[i].Last_Name=malloc(MAXNAME);
friends[i].home=malloc(MAXPHONE);
friends[i].cell=malloc(MAXPHONE);
if(!friends[i].First_Name || !friends[i].Last_Name || !friends[i].home || !friends[i].cell) {
printf("\nmalloc() failed!\n");
getchar();
return;
}
strcpy(friends[*counter].First_Name,temp.First_Name);
strcpy(friends[*counter].Last_Name,temp.Last_Name);
strcpy(friends[*counter].home,temp.home);
strcpy(friends[*counter].cell,temp.cell);
(*counter)++;
i++;
}
//fclose(read);
free(temp.Last_Name);
free(temp.First_Name);
free(temp.home);
free(temp.cell);
}
void print_contact(fr*friends ,int* counter, int i,char buffer[],char user_entry3[50],FILE*read) {
for(i = 0; i < *counter; i++)
if (strlen(friends[i].First_Name) && strlen(friends[i].Last_Name)&& strlen(friends[i].home)&& strlen(friends[i].cell))
{
getFirst(friends, i);
getLast(friends, i);
getHome(friends, i);
getCell(friends, i);
}
file2(friends ,counter,i,buffer,read,user_entry3);
}
這很奇怪,因爲它就像程序完美工作一次,但不是再次。
這是不夠的你的代碼 - 哪裏的main()?此外,您的打印程序正在調用您的加載例程,它已打印您的清單 - 這是不對的。 –