这是我几天来一直在努力完成的家庭作业的一部分。 所以我们定义这个结构体
typedef enum { male = 0, female } gender;
struct person {
char name[30];
gender genderValue;
int age;
float weight;};
现在,我们得到了这个函数
int add(char* name, char* genderValueString, int age, float weight){}
我们被要求在该函数内构造一个新人。 我尝试了不同的方法,但不断出错,甚至无法正确命名。
struct person newperson = {.name = *newname, //...rest of code..};
只读取第一个字符,忽略其余字符。 如何将值传递给新人 person。
这也不起作用:
char newname[30];
strcpy_s(newname, 30, name);
struct person newperson = { .name = newname //...}
最佳答案
有两个问题:
首先是您取消引用指针变量newname
。这为您提供了指针指向的值,这实际上只是字符串的第一个字母。
第二个问题是不能用指针或另一个数组初始化数组。您必须复制数组。对于字符串,您应该使用 strcpy
(或者 strcpy_s
如果可用的话)。
关于c - 从 C 中的指针实例化一个新结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681543/