c语言数据恢复和保存
答案:1 悬赏:50 手机版
解决时间 2021-03-16 06:01
- 提问者网友:欺烟
- 2021-03-15 21:12
每次运行程序时,可通过从文件中读取的方式恢复原队列数据,对队列进行初始化;程序运行结束时,可将队列中的数据保存至自定义的用户文件中。给个程序框架吧。。。
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-03-15 22:06
typedef struct Flight //航班信息结构
{
char flightnum[10]; //航班号
char company[20]; //航空公司
char from[15]; //起始站
char destn[15]; //终点站
char starttime[12]; //起飞时间
char arrive[12]; //到达时间
int price; //票价
int surplus; //剩余票数
char late[12]; //准点率
char interval[12]; //是否隔天起飞
}flight;
typedef struct flightlist //
{
flight data;
struct flightlist *next;
}flightlist;
void input()
{
char flag=1;
FILE *fp;
if((fp=fopen("d:\\flight.dat","wb"))==NULL)
{
printf("创建文件失败!\n\n");
exit(1);
}
while(flag!='0')
{
flight *s=(flight*)malloc(sizeof(flight));
printf("请依次输入航班信息,完成输入信息请键入数字以回车键结束\n\n");
printf("----------------------------时间格式:HH:MM-----------------------------\n");
printf("请输入航空公司:\n");
scanf("%s",s->company);
printf("请输入航班号:\n");
scanf("%s",s->flightnum);
printf("请输入起始站:\n");
scanf("%s",s->from);
printf("请输入终点站:\n");
scanf("%s",s->destn);
printf("请输入起飞时间:\n");
scanf("%s",s->starttime);
printf("请输入到达时间:\n");
scanf("%s",s->arrive);
printf("请输入剩余机票数(<300):\n");
scanf("%d",&s->surplus);
printf("请输入票价:\n");
scanf("%d",&s->price);
printf("请输入准点率:\n");
scanf("%s",s->late);
printf("请输入是否隔天\n");
scanf("%s",s->interval);
fwrite(s,sizeof(flight),1,fp);
printf("信息已经输完,是否继续?任意键继续,输入0退出\n");
scanf("%c",&flag);
scanf("%c",&flag);
free(s);
}
fclose(fp);
}
void read(FILE *p)
{
flightlist * p1,*p3;
flightlist * a=(flightlist*)malloc(sizeof(flightlist));
fread(&(a->data),sizeof(flight),1,p);
p1=a;
while (!feof(p))
{
flightlist *p2=(flightlist*)malloc(sizeof(flightlist));
p1->next=p2;
fread(&(p2->data),sizeof(flight),1,p);
p3=p1;
p1=p2;
}
free(p1);
p3->next=NULL;
head=a;
}
我一个程序的一部分,你看看吧,或许有帮助
{
char flightnum[10]; //航班号
char company[20]; //航空公司
char from[15]; //起始站
char destn[15]; //终点站
char starttime[12]; //起飞时间
char arrive[12]; //到达时间
int price; //票价
int surplus; //剩余票数
char late[12]; //准点率
char interval[12]; //是否隔天起飞
}flight;
typedef struct flightlist //
{
flight data;
struct flightlist *next;
}flightlist;
void input()
{
char flag=1;
FILE *fp;
if((fp=fopen("d:\\flight.dat","wb"))==NULL)
{
printf("创建文件失败!\n\n");
exit(1);
}
while(flag!='0')
{
flight *s=(flight*)malloc(sizeof(flight));
printf("请依次输入航班信息,完成输入信息请键入数字以回车键结束\n\n");
printf("----------------------------时间格式:HH:MM-----------------------------\n");
printf("请输入航空公司:\n");
scanf("%s",s->company);
printf("请输入航班号:\n");
scanf("%s",s->flightnum);
printf("请输入起始站:\n");
scanf("%s",s->from);
printf("请输入终点站:\n");
scanf("%s",s->destn);
printf("请输入起飞时间:\n");
scanf("%s",s->starttime);
printf("请输入到达时间:\n");
scanf("%s",s->arrive);
printf("请输入剩余机票数(<300):\n");
scanf("%d",&s->surplus);
printf("请输入票价:\n");
scanf("%d",&s->price);
printf("请输入准点率:\n");
scanf("%s",s->late);
printf("请输入是否隔天\n");
scanf("%s",s->interval);
fwrite(s,sizeof(flight),1,fp);
printf("信息已经输完,是否继续?任意键继续,输入0退出\n");
scanf("%c",&flag);
scanf("%c",&flag);
free(s);
}
fclose(fp);
}
void read(FILE *p)
{
flightlist * p1,*p3;
flightlist * a=(flightlist*)malloc(sizeof(flightlist));
fread(&(a->data),sizeof(flight),1,p);
p1=a;
while (!feof(p))
{
flightlist *p2=(flightlist*)malloc(sizeof(flightlist));
p1->next=p2;
fread(&(p2->data),sizeof(flight),1,p);
p3=p1;
p1=p2;
}
free(p1);
p3->next=NULL;
head=a;
}
我一个程序的一部分,你看看吧,或许有帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯