c - 如何使用函数填充结构中的值?
问题描述
我想调用一个函数来填充 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;
}
解决方案
s
是指针,而不是结构。这意味着你不能使用.
它。
相反,您必须编写(*s).id
(取消引用,然后访问结构成员)或s->id
(相同的东西,但更短)。
另外,scanf
%d
需要一个指针,所以应该是&s->id
,等等。
推荐阅读
- excel - Excel VBA 在上一列的范围内搜索
- postgresql - 如何在 POSTGRESQL 中表示每月百分比?
- php - 为什么 VSC IDE 不会忽略注释掉的代码?
- pytorch - PyTorch:GRU,一对多/多对一
- php - 如何仅查询重复事件的第一个实例
- javascript - 使用java脚本反应js日期格式
- android - Android CameraX YuvToRgbConverter 人工制品
- python - 通过电子邮件发送保存在数据库中的表单数据(Flask、pymysql、)
- python-3.x - 使用reportlab python库以Bangla语言生成PDF损坏的联合字母问题
- python - 如何将用户重定向到容器 webapp 但显示不同的地址