我一直在研究此代码,我相信我的逻辑是正确的,但它始终会引发分段错误。我只是希望得到另一双眼睛,以帮助我了解自己在做错什么。谢谢你的时间。

最佳答案

看来您在这里使用了错误的数组下标:

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/

10-15 02:55