簡體   English   中英

C陣列程序因分段錯誤而崩潰

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

}

在您的代碼中,存在一個實現邏輯問題。 學生totaltotal ,因此,你的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM