在Visual studio中使用结构的动态数组时发生C-Access错误



我是C编程的新手,我正在尝试运行一个代码片段,创建一个结构对象的动态数组,然后使用scanf保存值。当我在代码块中运行代码时,它运行得很好,但在Visual studio 2019 中引发内存访问异常

我正在附加代码片段和错误跟踪。

struct Student
{
int rollNumber;
char studentName[10];
float percentage;
};
int main(void)
{
int counter;
struct Student studentRecord[5];
printf("Enter Records of 5 students");
for (counter = 0; counter < 5; counter++)
{
printf("nEnter Roll Number:");
scanf_s("%d", &studentRecord[counter].rollNumber);
printf("nEnter Name:");
scanf_s("%s", &studentRecord[counter].studentName);
printf("nEnter percentage:");
scanf_s("%f", &studentRecord[counter].percentage);
}
printf("nStudent Information List:");
for (counter = 0; counter < 5; counter++)
{
printf("nRoll Number:%dt Name:%st Percentage :%fn",
studentRecord[counter].rollNumber, studentRecord[counter].studentName, studentRecord[counter].percentage);
}
return 0;
}

错误:

在linkedList.exe中的0x7C9AEF8C(基于ucrt.dll(处引发异常:0xC0000005:写入位置0x00500000时发生访问冲突。

您需要为string格式说明符(即%s(指定缓冲区的大小(以字符为单位(。

scanf_s( "%9s", studentRecord[ counter ].studentName, 10 );

最新更新