如何在C中向结构属性添加数组?

如何在C中向结构属性添加数组?,c,C,如何在C中向结构属性添加数组?这里有一个我想要完成的例子: #include <stdio.h> #include <string.h> typedef struct { char age; short number; int grades[10]; char name[80]; char address[120]; } Student; Student s; s.age = 23; s.number = 10; strcpy

如何在C中向结构属性添加数组?这里有一个我想要完成的例子:

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

typedef struct {
    char age;
    short number;
    int grades[10];
    char name[80];
    char address[120];
} Student;

Student s;

s.age = 23;
s.number = 10;
strcpy(s.name, "Jon");
strcpy(s.address, "Doe");

int oldGrades[10] = {1, 8, 2, 2, 4, 9, 9, 8, 4, 1};

s.grades = oldGrades; // Error: expression must be a modifiable lvalue
#包括
#包括
类型定义结构{
焦龄;
数量不足;
国际职系[10];;
字符名[80];
字符地址[120];
}学生;
学生证;
s、 年龄=23岁;
s、 数字=10;
strcpy(s.name,“Jon”);
strcpy(s.地址,“Doe”);
int oldGrades[10]={1,8,2,2,4,9,9,8,4,1};
s、 等级=旧等级;//错误:表达式必须是可修改的左值

如何将数组oldGrades添加到最近创建的对象的属性grades

您可以使用for循环手动复制数组内容

for(int i =0;i<10;i++)
s.grades[i] = oldGrades[i];

c
不提供通过赋值复制数组的工具
s.grades=oldGrades

这与结构无关。
s.grades=oldGrades-->
memcpy(s.grades、oldGrades、sizeof(oldGrades))如果数字是电话号码而不是id,那么它应该是一个字符串。作为其他注释的补充,您还可以将grades数组包装在它自己的结构中。可以通过赋值将结构的内容从一个复制到另一个。不是说这是一种好的设计实践,而是另一种技术上正确的实现方法。在这种情况下引入
memcpy()
方法是一个很好的解决方案,但我认为
for()
对新手来说更好。
memcpy(s.grades, oldGrades, sizeof(oldGrades))