【发布时间】:2016-06-09 10:13:32
【问题描述】:
这只是我整个代码的一部分,一切正常,保存功能正常,但是当我加载文件时,它只能从文件中检索 1 条记录,当我加载它时并在没有文件的情况下保存,它会先在记录中创建空数据,我应该发送整个代码吗?
对不起,我还是新手,这就是为什么我只做我的讲座所说的,她使用 fflush stdin,gets 和东西,我仍然不知道哪个是更好的关键字来改变它。谢谢
void savefile()
{
FILE *fp;
fp = fopen("airrecord.txt","w");
curr=start;
while(curr)
{
fprintf(fp, "Booking ID = %10s\n",curr->booking_id);
fprintf(fp, "Seat Number = %10s\n",curr->seatno);
fprintf(fp, "Name = %10s\n",curr->name);
fprintf(fp, "Passport Number = %10s\n",curr->passno);
fputc('\n',fp);
curr=curr->next;
}
fclose(fp);
}
void loadfile()
{
FILE *fp =fopen("airrecord.txt","r");
int c;
while((c = getchar()) != EOF)
{
curr=start;
if(start==NULL)
{
start=curr=(struct passenger *)calloc(1, sizeof(struct passenger));
fscanf(fp, "Booking ID = %10s\n",curr->booking_id);
fscanf(fp, "Seat Number = %10s\n",curr->seatno);
fscanf(fp, "Name = %10s\n",curr->name);
fscanf(fp, "Passport Number = %10s\n",curr->passno);
curr->next=NULL;
break;
}
while(curr->next=NULL)
curr=curr->next;
curr->next=(struct passenger *)calloc(1, sizeof(struct passenger));
curr=curr->next;
fscanf(fp, "Booking ID = %10s\n",curr->booking_id);
fscanf(fp, "Seat Number = %10s\n",curr->seatno);
fscanf(fp, "Name = %10s\n",curr->name);
fscanf(fp, "Passport Number = %10s\n",curr->passno);
curr->next=NULL;
break;
}
fclose(fp);
}
int main()
{
FILE *fp;
void reserve_seat(), cancel_seat(), modify_seat(), display_layout(), exit();
int choice;
start=curr=NULL;
loadfile();
do
{
system("cls");
printf("\n\n*************************************************");
printf("\n\n**************AIRLINE RESERVATION MENU***********");
printf("\n\n*************************************************");
printf("\n\n* 1. Reserve seat\t\t\t\t*");
printf("\n\n* 2. Modify seat\t\t\t\t*");
printf("\n\n* 3. Cancel seat\t\t\t\t*");
printf("\n\n* 4. Display seat layout\t\t\t*");
printf("\n\n* 5. save and exit Exit\t\t\t\t\t*");
printf("\n\n*************************************************");
printf("\n\n\tEnter your choice: ");
scanf("%d",&choice);fflush(stdin);
switch (choice)
{
case 1:
reserve_seat();
break;
case 2:
modify_seat();
break;
case 3:
cancel_seat();
break;
case 4:
display_layout();
break;
case 5:
{
savefile();
break;
}
default:
printf("invalid choice!!, please try again");
}
getch();
}while (choice != 5);
}
【问题讨论】:
标签: c file linked-list