[英]C Array program is crashing with segmentation fault
我正在学习数组,只是写了这个小程序,看它是如何工作的。 但它崩溃了我理解的分段faul意味着我正在将我的变量/函数写入一个没有分配给它的内存位置。 但我不知道如何。 有人能告诉我吗? 我从main()调用introArray。
int introArray (void)
{
int total, ctr;
printf("enter how many students \n");
scanf("%d", &total);
int students[total];
ctr = 0;
while ( students[ctr] <= total)
{
printf("enter student %d DOB in mmddyy \n", ctr );
scanf("%d", students[ctr]);
ctr++;
}
return 0;
}
在您的代码中,存在一个实现逻辑问题。 学生total
是total
,因此,你的while
循环应该是
while(ctr < total)
要读取的数据也应该是scanf("%d", &students[ctr]);
有一个&符号丢失
ctr
超越了total
。 通过这种方式,您可以将循环更改为
while (ctr < total)
{
printf("enter student %d DOB in mmddyy \n", ctr );
scanf("%d", &(students[ctr]));
ctr++;
}
这条线
while ( students[ctr] <= total)
不能防止读取循环内的数组边界。 如果您使用ctr
作为索引,这将阻止您读取数组的末尾
while ( ctr < total)
你需要严格的不等式,因为数组索引是零基础的。
另外,你的while
循环中的scanf
调用是错误的 - 第二个参数应该是一个指针,目前你传递一个整数。 它应该是
scanf("%d", &students[ctr]);
我认为
scanf("%d", students[ctr]);
应该
scanf("%d", &students[ctr]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.