Destiny_ing 2024-05-30 20:26 采纳率: 66.7%
浏览 1
已结题

这个运行出现错误应该如何修改?

img


这个只能查找第一个人,无法查找其他人,应该如何修改?这是一个通讯录系统,已经从文件里输入数据了。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-30 20:26
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的代码中,chazhao 函数存在一些问题,导致它只能查找第一个匹配项。为了修复这个问题,我们需要对循环进行适当的调整,并移除 break 语句。以下是修改后的代码:

    void chazhao(txl *qw) // 查找函数
    {
        char name[max];
        int i;
    
        printf("请输入你要查找的人的姓名: ");
        scanf("%s", &name);
    
        for (i = 0; i < qw->size; i++) // 用指针访问数组
        {
            if (strcmp(qu->sz[i].name, name) == 0)
            {
                printf("名字: %s\n", qw->sz[i].name);
                printf("性别: %s\n", qw->sz[i].sex);
                printf("电话: %d\n", qw->sz[i].dianhua);
                printf("年龄: %.1f\n", qw->sz[i].year);
                printf("分类: %s\n", qw->sz[i].leibie);
            }
            else
            {
                printf("未查找到相应联系人。\n");
            }
        }
    }
    

    主要更改包括:

    1. 移除了 break 语句,这样程序会遍历整个数组,直到找到所有匹配的联系人。
    2. 将原本放在循环外的 "未查找到相应联系人" 提到了循环内部,以便在每次循环后检查是否找到了匹配项。

    现在,这个函数会在找到多个匹配项时显示所有匹配的联系人信息。如果没有找到匹配项,它将只在循环结束后输出 "未查找到相应联系人"。确保您的结构体定义正确并且从文件读取的数据已经被成功地存储到 qw 指针所指向的结构体数组中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 5月30日

悬赏问题

  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目