[英]segmentation fault in C comparing integer members from structure to array in main
[英]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
代替單獨的else
和if
,就像這樣
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.