比较数组成员与整数时的分段错误

时间:2015-05-25 19:24:59

标签: c arrays segmentation-fault

我一直在编写链接图实现程序,能够找到最短路径。 这是我打印的功能。我有一个带有路径标记的数组我尝试在这里对它们进行排序,然后进行打印,但是在 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;
                }
            }
        }

1 个答案:

答案 0 :(得分:2)

您只检查if (j > n),但实际上j == n已离线,您也可以使用else if而不是单独的elseif,就像这样< / p>

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)