ZBLOG

void delgoods(char * Goods) { struct Node *p1,*p2,*p3; char m; int flag=0; char id[20]; FILE *fp; printf("删除商品\n"); printf("*************************\n"); while(1) { head=create(Goods); if(head==NULL) { printf(&q

这段代码实现了一个删除商品的功能,需要传入一个表示商品信息存储文件的指针。函数首先通过调用create函数创建一个链表,并判断是否为空,如果为空则提示文件里没有商品并退出函数。

接着,该函数会要求用户输入要删除商品的编号,并打开文件进行查找。如果查找到了对应的商品,则输出该商品的详细信息并将其从链表中删除。具体来说,它会将当前节点p1指向头结点head,将下一节点p2指向头结点的下一节点head->next;然后在循环中比较p2所指向的节点的id是否与用户输入的id相等。若相等,则输出对应数据并断开p1和p2之间的连接,最后将剩余元素重新写入文件。

若未找到对应商品,则提示该商品不存在。随后询问用户是否要继续删除其他商品,如果是则清屏并进入下一轮循环;否则跳出循环并调用viewgoods函数展示更新后的所有商品信息。

需要注意几个问题:

  1. 函数调用create函数时是否需要传参?create函数内部是如何实现读取文件内容构建链表结构的?
  2. 文件打开失败时程序会直接退出,请问你认为有哪些改进方式可以增加程序健壮性?
  3. 在重写文件时为什么还需要释放掉被删除节点占据的内存?

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3210

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?