gpt4 book ai didi

c - 如何在 C 中将字符串与结构一起使用?

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:20 25 4
gpt4 key购买 nike

我已经看到了 this question 的答案但对于像我这样的新手来说,它提供的信息非常少,而且仍然无法让它发挥作用。我试图声明一个名为“name”的结构成员,它采用一个字符串值,然后试图弄清楚如何获取该值并打印它。我尝试过的每一种方法都会产生错误...

typedef struct {
float height;
int weight;
char name[];
} Person;


void calculateBMI(Person x) {
//printf will go here here
}


int main(int argc, const char * argv[]) {

Person Michael;
Michael.height = 62.0;
Michael.weight = 168;
Michael.name[] "Michael";

Person Steve;
Steve.height = 50.4;
Steve.weight = 190;
Steve.name = "Steven";

calculateBMI(Michael);
calculateBMI(Steve);
}

最佳答案

您必须指定 char 数组的长度,如下所示:

typedef struct {
float height;
int weight;
char name[30];
} Person;

然后使用 strcpy 填充它:

int main(int argc, const char * argv[]) {

Person Michael;
Michael.height = 62.0;
Michael.weight = 168;
strcpy(Michael.name, "Michael");

Person Steve;
Steve.height = 50.4;
Steve.weight = 190;
strcpy(Steve.name, "Steven");

calculateBMI(Michael);
calculateBMI(Steve);
}

这个解决方案在所有常见情况下都是最干净的,因为当您声明类型为 Person 的新变量时,您正在将空间分配到堆栈中。在大多数复杂的场景中,您不知道 char 数组的大小,也许您需要使其尽可能小。在这些情况下,您可以使用 malloc 解决方案。
请记住,每次使用 malloc 时,您都必须记住在处理完数据后释放分配的空间。

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

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