[英]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.