gpt4 book ai didi

c - 如何使用函数将字符串添加到结构中?

转载 作者:行者123 更新时间:2023-12-04 10:13:36 25 4
gpt4 key购买 nike

我制作了一个 parking 系统,在其中使用 void 功能输入车辆的信息。
但我不知道如何使用 void 将字符串放入结构中。

这是我的代码。
我的错误在哪里?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct car {
char plate[10];
char model[20];
char color[10];
};

void main() {

struct car c[4];

AddCar(c[0], "43ds43", "ford", "blue");
ShowCar(c[0]);

return 0;
}
// I guess my mistake is here
void AddCar(struct car c, char p[10], char m[10], char r[10]) {
strcpy(c.plate, p);
strcpy(c.model, m);
strcpy(c.color, r);
}

void ShowCar(struct car c) {
printf("Plate: %s Model: %s Color: %s\n-------", c.plate, c.model, c.color);
}

最佳答案

您的代码中有许多错误!首先解决“其他”问题:

  • 您需要为 AddCar 提供函数原型(prototype)和 ShowCar在你使用它们之前,或者编译器会假定它们返回 int然后在看到实际定义时提示。
  • 您的 main函数(正确)返回 0但它被声明为 void - 所以把它改成 int main(...) .

  • 而“真正的”问题:你正在传递你的 car结构到 AddCar 按值(value) - 这意味着制作一个副本,然后传递给函数。对该副本的更改不会影响调用模块中的变量(即在 main 中)。要解决此问题,您需要将指针传递给 car结构,并使用 ->该函数中的运算符(代替 . 运算符)。

    这是您的代码的“固定”版本,在我进行重大更改的地方添加了注释:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    struct car {
    char plate[10];
    char model[20];
    char color[10];
    };

    // Add your functions' prototypes before you use them...
    void AddCar(struct car *c, char p[10], char m[10], char r[10]);
    void ShowCar(struct car c);

    int main() // If you return an int, you must declare that you do!
    {
    struct car c[4];
    // Here, we pass a pointer to `c[0]` by adding the `&` (address of)...
    AddCar(&c[0], "43ds43", "ford", "blue");
    ShowCar(c[0]);
    return 0;
    }

    void AddCar(struct car *c, char p[10], char m[10], char r[10])
    { // ^ To modify a variable, the function needs a POINTER to it!
    strcpy(c->plate, p);
    strcpy(c->model, m); // For pointers to structures, we can use "->" in place of "."
    strcpy(c->color, r);
    }

    void ShowCar(struct car c)
    {
    printf("Plate: %s Model: %s Color: %s\n-------", c.plate, c.model, c.color);
    }

    随时要求进一步澄清和/或解释。

    关于c - 如何使用函数将字符串添加到结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61195643/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com