我一直在研究此代码,我相信我的逻辑是正确的,但它始终会引发分段错误。我只是希望得到另一双眼睛,以帮助我了解自己在做错什么。谢谢你的时间。
最佳答案
看来您在这里使用了错误的数组下标:
else if ((strcmp(*(array2 + i) , *(array1 + j)) < 0)) //compares first position in each array again
当
i
下标应为array2
时,将其与j
一起使用。您还用array1
替换了下标。顺便说一句,您知道您可以说
array1[i]
而不是*(array1 + i)
吗?编辑:
您有两个
if
块,用于测试array1[i]
和array2[j]
的NULL
值。我认为您需要在每个代码块的末尾添加continue;
。否则,您将命中以下if
语句,并将NULL
传递给strcmp()
。当您具有告诉每个数组中有多少个条目的
NULL
参数时,是否真的需要测试count
?关于c - C编码中具有合并排序功能的段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15441223/