2401_87334475 2024-09-24 18:10 采纳率: 50%
浏览 3
已结题

c语言一点点疑惑,请求解答

img


编译过程没问题,但不知道为什么显示null;而且我想知道24行中用people[i].number的话输出结果为什么会是124-124而不是people[1].number

  • 写回答

3条回答 默认 最新

  • 一轮明月照丘壑 2024-09-24 18:11
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你的问题描述来看,你的代码主要存在两个问题。下面我将一一解释这些问题,并提供相应的解决方案。

    问题一:在打印电话号码时显示null。这是因为你在给结构体的number成员赋值时,使用了算术表达式(如 people[0].number=123-123;),这将导致number成员的值实际上是整型值0,而不是一个有效的字符串。在打印这个值时,你使用了printf的"%s"格式符,它是用来打印字符串的。由于你的number成员实际上是一个整型值(在这种情况下是0),所以打印出来的结果会是"(null)"。正确的做法应该是给number成员分配一个字符串常量或者动态分配内存并赋予有效的电话号码字符串。例如:

    people[1].number = "1234567890"; // 或者使用malloc来动态分配内存
    

    问题二:当你尝试打印people[i].number时得到的结果是124-124而不是people[1].number。这是因为你直接在循环中使用people[i].number来代表当前迭代的个体的电话号码,而这个值在你的代码中已经被赋值为整型值0(因为124-124等于0)。因此,打印出的结果是数字而不是字符串"people[1].number"。正确的做法应该是在循环内部打印的是当前个体的名字和电话号码,例如:

    if (strcmp(people[i].name, "Emma") == 0) {
        printf("Emma's number: %s\n", people[i].number);
        return 0;
    }
    

    总的来说,你需要确保你的电话号码是字符串格式,并且在循环中正确地引用个体的名字和电话号码。希望这个解答能够帮助你解决问题。

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

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月24日