首页 > 解决方案 > 如何使用函数填充结构中的值?

问题描述

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

标签: cpointersstruct

解决方案


s是指针,而不是结构。这意味着你不能使用.它。

相反,您必须编写(*s).id(取消引用,然后访问结构成员)或s->id(相同的东西,但更短)。

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


推荐阅读