私はバイナリ検索機能を持っています。ポインタ文字配列、その配列の長さ、検索ポインタ文字配列、および別のカウンタを渡しています。文字配列の特定のメンバーに "strcmp"を使用する
int binarySearch(char* charArray, int len, char* searchItem, int counter)
{
int position;
int begin = 0;
int end = len-1;
int cond =0;
while(begin <= end)
{
position = (begin + end)/2;
// searchItem is a pointer array and the value I want to compare to is
// at the index of counter (determined outside of this function)
if((cond = strcmp(&charArray[position], &searchItem[counter])) == 0)
{
return position;
}
else if(cond < 0){
begin = position + 1;
}
else
end = position - 1;
}
return -1;
}
ここから、手でコードを調べると、それはうまくいくはずだと思うように思えますが、そうではありません。私は私のポインタのラインに沿ってどこかに投げ捨てられていると思います。私はそれらを参照しているので、間違ったデータが比較されています。
私はそれをあまりにも長い間見てきましたが、本当にここでいくつかの助けが必要です。
「正常に動作しません」と定義する必要があります。助けを求めたり、他の人があなたが実際にどのような問題を抱えているかを推測させたりしないでください。 – tbert