删除功能和修改功能,在删除或者修改以后在显示功能中显示空的信息。怎样修改这个问题?
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了修复删除和修改功能后显示空信息的问题,我们需要确保在执行删除和修改操作后正确更新通讯录中的数据,并且在显示(
xianshi()
)函数中处理可能存在的空值。首先,我们来修复删除(
shanchu()
)函数。当找到匹配项时,我们应该将最后一个元素复制到被删除的位置,然后减小size
值,确保数组不包含空值。这是修改后的删除函数:
void shanchu(txl *qw) { int i; char name[90]; printf("请输入你要删除联系人的姓名:"); scanf("%s", name); for (i = 0; i < qw->size - 1; i++) { // 避免越界,最后一次迭代不需要检查 if (strcmp(qw->sz[i].name, name) == 0) { qw->sz[i] = qw->sz[qw->size - 1]; // 将最后一个元素复制到当前位置 qw->size--; // 减少联系人数量 break; } } if (i >= qw->size) { printf("未查找到相应联系人。\n"); } else { printf("已删除。\n"); } }
接下来,修复修改(
xiugai()
)函数。同样地,我们需要确保在找到匹配项时正确地替换信息,并且在找不到匹配项时给出正确的提示。这是修改后的修改函数:
void xiugai(txl *qw) { char name[90]; int i; printf("请输入你要修改的人的姓名:"); scanf("%s", name); for (i = 0; i < qw->size; i++) { if (strcmp(qw->sz[i].name, name) == 0) { xinjian(qw); // 获取新的联系人信息 break; } } if (i >= qw->size) { printf("未找到相应的联系人。\n"); } else { printf("修改成功。\n"); } }
现在,当用户选择删除或修改功能后,通讯录中的数据会得到正确的更新,因此在显示(
xianshi()
)函数中不会出现空信息。以下是完整的显示函数,没有改动,但在这里提供一下,以防万一:void xianshi(txl qw) { int i; for (i = 0; i < qw.size; i++) { printf("名字:%s\n", qw.sz[i].name); printf("单位:%s\n", qw.sz[i].address); printf("性别:%s\n", qw.sz[i].sex); printf("移动手机:%s\n", qw.sz[i].dianhua); printf("分类:%s\n", qw.sz[i].leibie); } }
这些更改应该解决了您的问题。在运行程序之前,请确保所有必要的头文件都已经正确导入,并且编译器支持C语言标准。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
- ¥15 android 集成sentry上报时报错。
- ¥50 win10链接MySQL
- ¥35 跳过我的世界插件ip验证
- ¥15 抖音看过的视频,缓存在哪个文件
- ¥15 自定义损失函数报输入参数的数目不足
- ¥15 如果我想学习C大家有是的的资料吗
- ¥15 根据文件名称对文件进行排序
- ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
- ¥15 有人会用py或者r画这种图吗