1

こんにちは、bsearch()関数に問題があります。「アクセス違反の読み取り場所」例外が発生します。私はそれを次のように使用しています:

typedef char **arstr;

int compareexp(const void *a, const void *b){ 
    return strcmp(*(const arstr)a, *(const arstr)b);
}

binsrch = bsearch(&key, file_array, linecount, WORDMAX+2, compareexp);

'file_array'は、2401個の要素を持つ動的な文字列配列です。各要素は、*。txtドキュメントからインポートされた最大22文字の長さです。

'linecount'は整数2402であり、同じ*.txtドキュメントの行番号を参照します。

「WORDMAX」は20と定義されています

関数が失敗する理由がわかりません。linecountまたはWORDMAXの値に問題があると思います。

4

1 に答える 1

0

同様の例を見ると、競合他社で*が欠落しているか、WORDMAX+2が適切なアプローチではないように思われます。そのWORDMAXを変更して、使用している構造体のサイズを取得してみてください。

于 2012-04-18T01:10:52.360 に答える