簡體   English   中英

將數組成員與整數進行比較時出現分段錯誤

[英]Segmentation error when comparing member of an array with integer

我一直在寫一個鏈接圖實現程序,它能夠找到最短的路徑。 這是我的打印功能。 我有一個帶有標記的路徑的數組,我試圖在這里對它們進行排序並打印,但是在if(pathTaken [i] == src)行中,我遇到了分段錯誤。 這里可能出什么問題了?

    void printShortestPath(int pathTaken[], int n, int src, int dest)
    {
        int i = n-1;
        int j = 0;
        int toCompare;
        int printingOrder[n];
        int startingnumber;
        int stopper = 1;
        printingOrder[j] = dest;
        while(stopper != 0)
        {
            j++;
            pathTaken[i] = printingOrder[j];
            i = pathTaken[i];
            if(pathTaken[i] == src)
            {
                stopper = 0;
            }
            else
            {
                if(j > n)
                {
                    printf("No path from %d to %d found", src, dest);
                    stopper = 0;
                }
            }
        }

您只檢查if (j > n)但實際上j == n是越界的,也可以使用else if代替單獨的elseif ,就像這樣

else if (j >= n)
{
    printf("No path from %d to %d found", src, dest);
    stopper = 0;
}

或者您可以將條件添加到while控件中,例如

while ((stopper != 0) && (j < n))

或者您可以使用for循環,這似乎是這里的自然選擇

for (j = 0 ; ((stopper != 0) && (j < n)) ; ++j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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