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

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

只读取第一个字符,忽略其余字符。 如何将值传递给新人 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/

相关文章:

c - Strtok_r 未解析的外部符号

c++ - 将数组动态分配到具有指针参数的函数中

c - 多态结构的内存偏移错误

带有数组的 C# 结构

objective-c - 如何从 ARC 下运行时定义的类方法返回结构值?

C通过Makefile设置可执行权限

C - 递归搜索函数找到键然后返回NULL

c - fork() - 在 exec() 之前有什么用?

c - 函数在另一个函数中带有指针参数?

c++ - 使用 NULL 值初始化指向类的指针