C 将数组成员与整数进行比较时出现分段错误

C 将数组成员与整数进行比较时出现分段错误,c,arrays,segmentation-fault,C,Arrays,Segmentation Fault,我一直在写一个链接图实现程序,能够找到最短路径。 这是我的打印功能。我有一个带有路径标记的数组,我尝试在这里对它们进行排序并打印,但是在行if(pathTake[I]==src)中,我得到了一个分段错误。这里可能出了什么问题 void printShortestPath(int pathTaken[], int n, int src, int dest) { int i = n-1; int j = 0; int toCompare

我一直在写一个链接图实现程序,能够找到最短路径。 这是我的打印功能。我有一个带有路径标记的数组,我尝试在这里对它们进行排序并打印,但是在行if(pathTake[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;
                }
            }
        }
如果(j>n)只检查
,但实际上
j==n
是不允许的,如果
而不是单独的
else
if
,也可以使用
else,如下所示

else if (j >= n)
{
    printf("No path from %d to %d found", src, dest);
    stopper = 0;
}
或者,您可以将条件添加到
,而
控件

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

还是有同样的问题。我的程序不喜欢这个。如果(路径[i]==src)部分。它在编译过程中崩溃了,debbuger指向这一行。然后是你的编译器。不,这是我的愚蠢。我没有按打印顺序设置值,而是把路径数组搞乱了。路径[i]=打印顺序[j];应该是打印顺序[j]=pathtTaken[i];无论如何,谢谢你的帮助。
for (j = 0 ; ((stopper != 0) && (j < n)) ; ++j)