链表与文件的数据要同步
第一次打开程序:
先初始化一个用户信息到链表中,同步文件追加写入1个用户信息
第二(N)次打开文件:
ftell( )>0文件已存在,打开文件,循环读取用户信息追加到链表中
添加用户:
- 链表追加一个结点
- 文件追加写入一个用户结构体信息
修改用户
- 链表修改对应结点信息
- 文件对应修改
删除用户
- 链表删除对应节点
- 文件重写 用w+的方法打开文件,重新写入整条链表
具体逻辑过程:
添加菜品:需要添加至链表中,再添加至文件中
1.文件指示器定位到尾部fseek,以便在文件末尾添加数据
fseek(fp,0,SEEK_END);
2.写入数据fwrite:将需要写入的新数据利用fwrite函数进行写入
fwrite(data,size,1,fp);
3. fwrite后需要进行fflush刷新缓冲区
fflush(fp);
修改菜品信息:
1.文件指示器定位到需要修改的地方 fseek( fp,(n-1)*size,SEEK_SET );
从开始移动(n-1)*size大小的位置-> >n为结点位置
2. fwrite写入修改的数据,data为修改后的数据
fwrite(data,size,1,fp);
3. fwrite后需要进行fflush刷新缓冲区
fflush(fp);
删除菜品:
- 从链表中删除结点:list_erase(head,count);
- 使用fclose(fp);将原来的文件删除
- 以w+的方式重新创建:fp= fopen("./data/menudata.txt","w+");
- 重新写入文件:file_write(head,fp,sizeof(MENU_T));