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)