文件与通用链表的综合应用

链表与文件的数据要同步

第一次打开程序:
先初始化一个用户信息到链表中,同步文件追加写入1个用户信息

第二(N)次打开文件:
ftell( )>0文件已存在,打开文件,循环读取用户信息追加到链表中

添加用户:

  1. 链表追加一个结点
  2. 文件追加写入一个用户结构体信息

修改用户

  1. 链表修改对应结点信息
  2. 文件对应修改

删除用户

  1. 链表删除对应节点
  2. 文件重写 用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);

删除菜品:

  1.  从链表中删除结点:list_erase(head,count);
  2.  使用fclose(fp);将原来的文件删除
  3. 以w+的方式重新创建:fp= fopen("./data/menudata.txt","w+");
  4. 重新写入文件:file_write(head,fp,sizeof(MENU_T));
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值