C 为什么给数组结构赋值不起作用

C 为什么给数组结构赋值不起作用,c,arrays,struct,malloc,C,Arrays,Struct,Malloc,我正试图写一个收集学生信息的程序。我正在使用一组学生(结构) 我主要是这样做的 Student* stds = (Student*) malloc(app.std_cnt * sizeof(*stds) ); getStdData(stds); 下面是getStdData函数 void getStdData(struct Student *students){ int i; char name[50]; Student std; printf("\n"); for(i =

我正试图写一个收集学生信息的程序。我正在使用一组学生(结构)

我主要是这样做的

Student* stds = (Student*) malloc(app.std_cnt * sizeof(*stds) );

getStdData(stds);
下面是getStdData函数

void getStdData(struct Student *students){

 int i;
 char name[50];

 Student std;

 printf("\n");

 for(i = 0; i < app.std_cnt; i++){

    printf("std [%i] name : ",i+1);


    scanf("%s",&name);

    strcpy(std.name,name);

    students[i] = std;

 }
}
谁能告诉我我做错了什么?
为什么会抱怨学生之间的转换呢?它们不是同一类型吗?

在C中,
struct Student
Student
可能是两种不同的类型
Student
来自您的typedef,而
struct Student
来自

struct Student { /* ... */ };
所以你的函数应该是

void getStdData(Student *students)

为了更好地讨论情况,考虑./p>可能的副本:我如何打印数组?只需按我的建议更改函数声明(从<代码>空格GETSTDATA(结构学生>学生){<代码> >中删除<代码>结构> <代码>抱歉…我问了其他问题。我明白了,我很困惑,因为看起来你的代码已经在打印数组了,我没有注意到你只是在打印索引。

struct Student { /* ... */ };
void getStdData(Student *students)