如何使用函数填充struct中的值?

zin*_*non 0 c struct pointers

我想调用一个函数来填充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)

mel*_*ene 9

s是一个指针,而不是一个结构.这意味着你无法使用.它.

相反,你必须写(*s).id(取消引用,然后访问struct成员)或s->id(同样的事情,但更短).

另外,scanf %d拿一个指针,所以应该是&s->id,等等.