如果没有保存,那么,每一次重新打开程序后,你的数据都是空的。
如果没有读取已保存的数据,那么,每一次重新打开程序后,你的数据还都是空的。
通过分析,需要保存的数据有:
3、图书书库,用Book类型的数组bk保存,每个数组单元代表一种图书,退出系统时应该把数组中的数据保存在文件data.txt中,启动程序时数组从文件中读取数据。数组设置为全局数组:
BOOK bk[MANUM];
4、图书种类数量(数组实际使用的单元数),为全局变量,退出系统时应该保存在文件中:
int bookNum =0; /*不同图书的数量,初始值为0*/
也就是说,若图书的数据共有bookNum种。那么data.txt文件中需要先保存一个整数bookNum,然后再保存bookNum个Book类型的数据(来自数组bk。)
读取的时候,也是先读取整数到bookNum,然后在文件中连续读取bookNum个单元(Book类型)到数组bk。
读取的部分代码大致如下:(保存的代码可以参考该方式,使用fwrite函数)
ReadData(){
FILE *fp;
if((fp=fopen(".\\data.txt","rb"))==NULL)
{printf("Can not open the file!\n");return;}
fread(&bookNum,sizeof(int),1,fp);
fread(bk,sizeof(Book),bookNum,fp);
fclose(fp);
}这是我的部分代码
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<io.h>
#define MAXNUM 2000
typedef struct{
char isbn[10];//书序号
char bkName[30];//书名
char author[20];//作者
float price;//单价
int num;//数量
} Book;
int bookNum=3;
Book bk[MAXNUM]={"001","C Primer Plus","Stephen Prata",89.00,10,
"002","python","John zelle",78.00,20,
"003","The Dream of Red Mansion","CaoXueQin",38.00,30};
void input(){
system("cls");
有哪位大佬可以按上面的方法给我写一下吗?谢谢!