Destiny_ing 2024-05-28 15:22 采纳率: 71%
浏览 1
已结题

程序运行不了怎么办。

img

img

img

img

img


这个查找联系人的功能运行不了。
分不清->和.这两个符号的含义。
搞不懂指针的指向。

  • 写回答

2条回答 默认 最新

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

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

    在您的代码中,查找功能的问题在于如何正确地比较字符串。在C语言中,我们不使用==来比较两个字符串,而是使用strcmp()函数。此外,还有几个小错误需要修正。下面是修复后的代码片段,主要集中在chazhao()函数和xinjian()函数中的输入部分。

    首先,修复xinjian()函数中的输入部分,将f(" 改为printf(":

    void xinjian(txl* qu) {
        printf("名字:");
        scanf("%s", qu->sz[qu->size].name);
        printf("单位:");
        scanf("%s", qu->sz[qu->size].address);
        printf("性别:");
        scanf("%s", qu->sz[qu->size].sex);
        printf("移动手机:");
        scanf("%s", qu->sz[qu->size].dianhua);
        printf("分类:");
        scanf("%s", qu->sz[qu->size].leibie);
        qu->size++;
    }
    

    接下来,修复chazhao()函数中的字符串比较部分,使用strcmp()函数,并处理用户输入的字符串地址:

    void chazhao(txl *qw) {
        char name[90];
        printf("请输入你要查找的人的姓名:");
        scanf("%s", name);
    
        for (int i = 0; i < qw->size; i++) {
            if (strcmp(qw->sz[i].name, name) == 0) { // 使用 strcmp 进行字符串比较
                xianshi(qw);
                return; // 查找成功后返回,防止继续遍历
            }
        }
    
        printf("未查找到相应联系人。");
    }
    

    除此之外,还需要在主函数中修正chazhao()函数调用的缩进,将其与case 3:对齐:

    case 3: 
        chazhao(&qw); 
        break;
    

    现在,查找功能应该可以正常工作了。以下是完整的修复后的代码:

    #include<stdio.h>
    #include<string.h>
    #include<windows.h>
    
    #define max 100 // 最大联系人数
    
    struct stu {
        char name[90];
        char address[90];
        char sex[90];
        char dianhua[20];
        char leibie[90];
    };
    
    struct txl {
        struct stu sz[max]; // 联系人数组
        int size; // 联系人个数
    };
    
    void caidan();
    void xinjian(txl *qw);
    void xianshi(txl qw);
    void chazhao(txl *qw);
    
    int main() {
        txl qw; // 创建通讯录
        qw.size = 0; // 个数初始化
    
        while (1) { // 添加死循环使其持续出现菜单
            caidan(); // 菜单函数 引用
            scanf("%d", &n);
    
            switch (n) {
            case 1: // 新建联系人
                xinjian(&qw);
                printf("建立成功。\n");
                system("pause"); // 暂停
                system("cls"); // 清空屏幕
                break;
    
            case 2: // 修改联系人
            case 3:
                chazhao(&qw); // 注意这里已经修正了缩进
                break;
    
            case 4: // 删除联系人
            case 5: // 显示联系人
                xianshi(qw); // 输出函数
                system("pause"); // 暂停
                system("cls"); // 清空屏幕
                break;
    
            case 6: // 保存并退出
            default:;
            }
        }
    }
    
    void xinjian(txl* qu) {
        printf("名字:");
        scanf("%s", qu->sz[qu->size].name);
        printf("单位:");
        scanf("%s", qu->sz[qu->size].address);
        printf("性别:");
        scanf("%s", qu->sz[qu->size].sex);
        printf("移动手机:");
        scanf("%s", qu->sz[qu->size].dianhua);
        printf("分类:");
        scanf("%s", qu->sz[qu->size].leibie);
        qu->size++;
    }
    
    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);
        }
    }
    
    void chazhao(txl *qw) {
        char name[90];
        printf("请输入你要查找的人的姓名:");
        scanf("%s", name);
    
        for (int i = 0; i < qw->size; i++) {
            if (strcmp(qw->sz[i].name, name) == 0) { // 使用 strcmp 进行字符串比较
                xianshi(qw);
                return; // 查找成功后返回,防止继续遍历
            }
        }
    
        printf("未查找到相应联系人。");
    }
    

    现在,您可以尝试编译并运行这段代码,查找功能应该能正常工作了。如果还有其他问题,请随时告诉我。

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥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画这种图吗