}
}
}
getchar();
printf(\请输入作者名:\ scanf(\ getchar();
printf(\请输入出版社:\ scanf(\ getchar();
printf(\请输入类别:\ scanf(\ getchar();
printf(\请输入出版时间:\ scanf(\ getchar();
printf(\请输入价格:\ scanf(\ getchar();
return head;
int yanzheng(struct book *head,int m) { }
//将新链表写入文件中
void fprint(struct book *head) {
struct book *p; p=head; while(p!=NULL){ }
if(p==NULL)
return 0; if(p->num==m)
break;
p=p->next;
else
return 1;
FILE *fp; char ch='1'; struct book *p1;
if((fp=fopen(\字符IO流 }
fputc(ch,fp);//将字符ch写到文件指针fp所指向的文件的当前写指针的位置 for(p1=head;p1;p1=p1->next){//依次写入
fprintf(fp,\
printf(\ exit(0);
1->sort,p1->time,p1->price);
}
fclose(fp);//关闭 释放内存
} ——本代码由 闫 鹏 设计 //从文件中读取图书信息 struct book *load() {
FILE *fp; char ch;
struct book *head,*tail,*p1; head=tail=NULL;//链表初始化 if((fp=fopen(\ }
ch=fgetc(fp);//意为从文件指针fp指向的文件中读取一个字符 读取一个字节后 光
printf(\ exit(0);
标位置后移一个字节
if(ch=='1')
{
while(!feof(fp)){//检测fp流上的文件结束符
p1=(struct book *)malloc(sizeof(struct book));
fscanf(fp,\1->time,&p1->price);
if(head==NULL)
head=p1;
else
tail->next=p1;
tail=p1; }
tail->next=NULL; fclose(fp);
return head; }
//将整个链表的信息输出
void print_book(struct book *head) {
printf(\struct book *ptr; if(head==NULL){ }
printf(\图书信息列表如下\\n\
printf(\ printf(\编号 图书名 作者名 出版社 类别 出版时间 价格\\n\ for(ptr=head;ptr;ptr=ptr->next)//依次输出
printf(\没有信息!\\n\ return; } else
return NULL;
name,ptr->press,ptr->sort,ptr->time,ptr->price);
printf(\
} ——本代码由 张旭东 设计 //删除图书信息
void deletebook(struct book *head) {
int a; char b,ch='1'; struct book *p1,*p2; FILE *fp;
printf(\请输入要删除的图书编号:\ scanf(\
p1=head;
if(p1->num==a&&p1->next==NULL){//当文件中只有一组数据
printf(\是否清空文件!(y/n)\\n\ getchar(); scanf(\ getchar(); switch(b){ case 'n':
break;
case 'y':
if((fp=fopen(\重新写入
printf(\ exit(0);
}
fclose(fp);
} else{
}
printf(\文件已清空!\\n\
while(p1->num!=a&&p1->next!=NULL){//当文件中不只有一组数据
p2=p1; p1=p1->next; }
if(p1->next==NULL){
if(p1->num==a){
p2->next=NULL;
printf(\是否确定从文件中彻底删除该图书?(y/n)\\n\
getchar();
scanf(\ switch(b){
case 'n':
break;
case 'y':
fprint(head);
printf(\删除成功!\\n\
getchar(); break;
}
}
else{
printf(\没有找到要删除的数据!\\n\ getchar(); }
}
else if(p1==head){
head=p1->next;
printf(\是否确定从文件中彻底删除该图书?(y/n)\\n\
getchar();
scanf(\
switch(b){ case 'n':
break;
case 'y':
fprint(head);
printf(\删除成功!\\n\
getchar();
break; }
}
else{
p2->next=p1->next;
printf(\是否确定从文件中彻底删除该图书?(y/n)\\n\
getchar();
scanf(\
switch(b){ case 'n':
break;
case 'y':
fprint(head);
printf(\删除成功!\\n\
getchar();
}
break; }
}