从C中的指针实例化一个新结构

时间:2016-09-24 22:31:33

标签: c pointers struct

这是家庭作业的一部分,我已经好几天了。 所以我们定义了这个结构

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..};

只读取第一个字符并忽略其余字符。 如何获取传递给新人的值。

这也不起作用:

char newname[30];
strcpy_s(newname, 30, name);
struct person newperson = { .name = newname //...}

1 个答案:

答案 0 :(得分:0)

有两个问题:

首先,你取消引用指针变量newname。这会给你指针指向的值,这实际上只是字符串的第一个字母。

第二个问题是您无法使用指针或其他数组初始化数组。您必须复制数组。对于字符串,您应该使用strcpy(或strcpy_s,如果可用的话)。