我想调用一个函数来填充C中结构的值.我有以下代码,但是我得到了错误[Error] request for member 'id' in something not a structure or union.
#include <stdio.h>
typedef struct {
int id;
float grades[3];
} student_t;
void scan_student (student_t *s) {
printf("Please give student's info:\n");
scanf("%d%f%f%f", s.id, s.grades[0], s.grades[1], s.grades[2]);
}
int main ()
{
student_t stu2;
scan_student(&stu2);
printf("Student's info are:\n");
printf("%6d %5.2f %5.2f %5.2f\n", stu2.id, stu2.grades[0], stu2.grades[1], stu2.grades[2]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
s是一个指针,而不是一个结构.这意味着你无法使用.它.
相反,你必须写(*s).id(取消引用,然后访问struct成员)或s->id(同样的事情,但更短).
另外,scanf %d拿一个指针,所以应该是&s->id,等等.