void sortAlphabetically(int listLength, contactInfo* arrayOfStructs)
{
contactType temp;
for (int i = 0; i < listLength; i++)
{
if (strcmp(arrayOfStructs[i].contactName, arrayOfStructs[i+1].contactName) > 0)
{
temp = arrayOfStructs[i]; //swapping entire struct
arrayOfStructs[i] = arrayOfStructs[i+1];
arrayOfStructs[i+1] = temp;
}
}
}
1
A
回答
2
下面的表達式是無效的,當i == (listLength-1)
(假設listLength
是元素的數量在arrayOfStructs
計數):
arrayOfStructs[i+1]
1
你應該重複最多隻listLength - 1
,或檢查你是不是在引用arrayOfStructs[i+1]
之前的最後一個元素。
0
我相信這是因爲以下行:
arrayOfStructs[i] = arrayOfStructs[i+1];
arrayOfStructs[i+1] = temp;
更具體地說,i+1
部分。如果您的for
循環從零運行到listLength - 1
,則在最後一次迭代中,您將嘗試訪問超過實際範圍的一個元素。
您可以使用i < listLength - 1
來解決問題,或者只在循環中使用if
語句。改變病情可能是更好的做法。
1
它看起來像你索引斷開界數組:
arrayOfStructs[i+1]
我認爲listLength
是列表的長度,這意味着它比列表的最後一個元素多了一個。您有條件的i < listLength
讓我保持在限制範圍內,但不是i + 1。
這可能會或可能不會導致崩潰。
相關問題
- 1. 爲什麼這個程序崩潰?
- 2. 爲什麼這會導致我的程序崩潰?
- 3. 這個NSTimer爲什麼會崩潰?
- 4. 這個NSTimer爲什麼會崩潰?
- 5. 這個C++程序爲什麼會導致系統崩潰?
- 6. 這個小C程序爲什麼會崩潰?
- 7. 是什麼讓這個程序崩潰?
- 8. 爲什麼我的C程序崩潰
- 9. 爲什麼我的程序崩潰?
- 10. 爲什麼我的小程序崩潰?
- 11. 這個程序不斷崩潰,我無法解決爲什麼?
- 12. 爲什麼程序崩潰?
- 13. 這段代碼爲什麼會崩潰?
- 14. 這是爲什麼會崩潰? - C
- 15. 爲什麼這C#正則表達式崩潰我的程序?
- 16. 爲什麼我的程序在這一行中崩潰?
- 17. 爲什麼realloc()會導致我的程序崩潰?
- 18. 爲什麼我的程序在給定負值時會崩潰?
- 19. 爲什麼NSMutableArray Count會崩潰我的應用程序?
- 20. 爲什麼以下行會崩潰我的Android應用程序?
- 21. SenTestingKit爲什麼會導致我的應用程序崩潰?
- 22. 偶爾我的應用程序會崩潰,爲什麼?
- 23. 爲什麼這個C#代碼會導致進程崩潰?
- 24. 爲什麼我在這裏崩潰?
- 25. 爲什麼我的C++程序崩潰時,我這樣聲明一個數組?
- 26. execv爲什麼會崩潰?
- 27. 爲什麼nspredicate會崩潰?
- 28. PyObject_Print爲什麼會崩潰?
- 29. enable_shared_from_this。爲什麼會崩潰?
- 30. 爲什麼RSA_size會崩潰?
什麼錯誤是你的程序崩潰,到底是什麼? – Maxpm 2011-04-14 23:35:46
更好的問題:你爲什麼要這樣做,而不是使用'std :: sort'? – 2011-04-14 23:36:32
@maxpm program.exe已停止工作 – darko 2011-04-14 23:40:02