void Save_Book() /* 保存图书信息 */ { FILE *fp_book; /*创建文件型指针 */ BK *p,*p0; p=h_book; if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件 ,进行保存 */ { printf("\n 文件保存失败 !\n 请重新启动本系统 ...\n"); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的
时间: 2023-12-17 09:05:37 浏览: 140
图书信息写入文件,如果写入失败则输出错误信息*/ { printf("\n 文件写入失败 !\n 请重新启动本系统 ...\n"); exit(0); } p0=p; p=p->next; free(p0); /*释放p0所指向的节点*/ } fclose(fp_book); /*关闭文件*/ printf("\n 图书信息保存成功 !\n"); }
这段代码的作用是保存图书信息到文件中。程序首先创建一个文件型指针fp_book,然后将链表中的每个节点的图书信息写入文件。如果写入失败,程序会输出错误信息并退出。最后,程序释放链表中的所有节点并关闭文件,输出保存成功信息。
相关问题
分析一下代码 void Load_Book() /* 加载图书信息 */ { BK *p1,*p2,*p3; FILE *fp; /*创建文件型指针 */ fp=fopen("Book.txt","rb"); /*打开文件 */ p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); h_book=p3=p2=p1; while(! feof(fp)) /*读出信息 ,重新链入链表 */ { p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); p2->next=p1; p3=p2; p2=p1; } p3->next=NULL; free(p1); fclose(fp); /*关闭文件 */ }
这段代码的作用是从文件中加载图书信息,并将其存储到链表中。程序首先创建三个节点指针p1、p2、p3,然后打开文件,读取文件中的第一个节点,将其存储到p1指向的节点中。程序将h_book、p3、p2、p1都指向该节点,表示该节点是链表的头节点。然后程序通过while循环,不断读取文件中的每个节点,并将其存储到链表中。具体而言,程序创建一个新的节点p1,读取文件中的一个节点信息,将其存储到p1指向的节点中,然后将p2的next指针指向p1,表示将该节点加入到链表中。程序将p3指向p2,p2指向p1,表示将p1节点变成下一个新的节点的前一个节点。循环直到读取到文件末尾,此时p2指向最后一个节点,程序将其next指针设置为NULL,表示链表结束。最后程序释放p1节点的内存,关闭文件。
阅读全文