2013-03-15 56 views
-1

我一直对这个代码,我相信我的逻辑是正确的,但它一直扔分割故障。我只是希望得到另一双眼睛来帮助我看看我做错了什么。谢谢你的时间。段错误使用C合并排序功能编码

+0

你传递什么参数,将调用赛格故障? – Barney 2013-03-15 20:08:21

+0

它的两个排序数组及其长度,以及第三个数组,它们是空的以合并它们。 – silentman45 2013-03-15 20:11:03

+0

我在问什么是两个数组传入?例如[1,2,3],[4,5,6] – Barney 2013-03-15 20:12:24

回答

1

它看起来像你在这里使用了错误的数组下标:

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参数告诉有多少项是每个阵列中?

+0

良好的渔获,但并不十分修复错误 – silentman45 2013-03-15 20:26:06

+0

@ silentman45:你还修复了'ARRAY3 [K] =(数组1 [J]);下方'分配? – Blastfurnace 2013-03-15 20:27:30

+0

雅除此之外,代码似乎没问题我有点新的C,所以我仍然试图找出究竟是什么抛出分段错误。我尝试了@cdarke的建议,但是它出来说没有堆栈,所以我不确定如果我做对了,除了这一个功能外,其他所有工作都正常。 – silentman45 2013-03-15 20:35:12