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

标签 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;
                }
            }
        }

最佳答案

你只检查 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)

关于c - 将数组成员与整数进行比较时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444797/

相关文章:

c - Unisys 最新的大型机系统是否仍然使用补码表示?

c - 当操作系统取消固定远程内存缓冲区时,RDMA WRITE/READ 的行为如何?

java - 输出空白——计算数组平均值的Java程序

javascript - 在 Javascript 中按函数优化分组

c - 在 C 中,无法释放 NULL 并将其分配给 char 指针

c - 从输入文件中读取字符串并将它们存储到动态数组中

c - 标准库包含多个文件多次?

c - 如何计算C中相同字符的个数?

ios - 来自 StoreKit 的 SIGSEGV 崩溃 - 无法复制

c++ - SIGSEGV 错误(可能是数组索引越界)