fscanf_s参数调用与指针的问题
typedef struct student{
char name[7];
char id[14];
int Egrade; //实验成绩
int Tgrade; //卷面考试成绩
float scores; //总成绩
}student;
for (i=0;i<n;i++)
{
fscanf_s(fpr,"%s %s %d %d",p[i].id,p[i].name,&p[i].Egrade,&p[i].Tgrade);
}
------------------
蓝色部分是定义的结构体,p是指向一个student结构数组的指针。调试发现子函数运行到红色部分出错了。调试时报错代码是“0x5581F6A4 (msvcr110d.dll) (ScoresManage.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x005CC000 时发生访问冲突。”, 我查了一下,一般错误是 1.fscanf_s()输入问题。 2.对空指针赋值。
-----------------
我将红色部分改成【 fscanf_s(fpr,"%d %d",&p[i].Egrade,&p[i].Tgrade);】 后发现,for循环成功运行了,并且用printf还输出了[i].Egrade和p[i].Tgrade的值。所以应该不是p为空指针的原因。
我试着对红色语句的p[i].id,p[i].name前分别加&,但编译仍然失败,不知道哪里出了错误。
向大家求助!