gpt4 book ai didi

c - 使用指针为结构赋值时出错

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:42 25 4
gpt4 key购买 nike

我是 C 的新手,一直在尝试运行这个简单的代码,它使用指向结构的指针来计算输入的平均成绩。输入数学成绩后,程序抛出错误并停止。我究竟做错了什么。这也是我在这里的第一篇文章,所以如果有任何不一致之处,请多多包涵。谢谢!

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
char *name;
int mathGrade,scienceGrade,historyGrade,englishGrade;
}reportCard;

void average(reportCard *rc)
{
int avg = (rc->mathGrade +rc->scienceGrade+rc->historyGrade+rc->englishGrade)/4;
printf("The overall grade of %s is: %i ",rc->name, avg);
}

int main()
{
reportCard rc;
printf("Enter the Students Last name: ");
char studentName[20];
scanf("%s", studentName);

rc.name=studentName;

printf("Math Grade: \n");
scanf("%i", rc.mathGrade);

printf("Science Grade: \n");
scanf("%i", rc.scienceGrade);

printf("History Grade: \n");
scanf("%i", rc.historyGrade);

printf("English Grade: \n");
scanf("%i", rc.englishGrade);

average(&rc);

return 0;
}

最佳答案

你得到一个错误,因为用scanf读取原语需要指针:

scanf("%i", &rc.mathGrade);
scanf("%i", &rc.scienceGrade);
// ^
// |
// Here
// ...and so on

scanf 认为您传递的未初始化的 int 是指针,并尝试写入它,这导致错误。

此外,您需要防止在读取字符串时缓冲区溢出,如下所示:

scanf("%19s", studentName); // you allocated 20 chars; you need one for null terminator

关于c - 使用指针为结构赋值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com