「dict.txt」という名前のソートされていない辞書ファイルがあります。ファイルの単語を配列に入れることができました。使用するqsort()も正常に機能しているようです(つまり、配列はソートされています)。
bsearch() を呼び出すと問題が発生し、プログラムがクラッシュし、私の質問は次のとおりです。
なぜこうなった?
私は gcc を使用してコンパイルし、いかなる種類の IDE も使用しないため、デバッガーを持っておらず、使用方法も (まだ) 知りません。
ここに示したコードにはいくつかの問題が含まれている可能性があることは承知しています。
これは、私が c にまったく慣れておらず、私のバックグラウンドが主に Java であるためです (似ているにもかかわらず、これは欠点のようです。なぜなら、私は OO に慣れていて、c は明らかに OO ではないからです)。
アドバイスをいただければ幸いです。
int strcmp_mod(const void *p1, const void *p2) {
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
int main(void) {
int size, i;
char **words;
char *pItem;
char *key = "fight";
char* buf = load_file("dict.txt"); if (buf == NULL) return 1;
size = count_words(buf);
words = (char**)malloc((size+1) * sizeof(char*));
for (i=0; i<size; i++) {
words[i] = (char*)malloc(80 * sizeof(char));
}
copy_words_to_lower(buf, words, size);
words[size] = '\0';
qsort(words, size, sizeof(char*), strcmp_mod);
for (i=0; i<size; i++) {
printf("%s\n", words[i]);
}
pItem = (char *) bsearch(key, words, size, sizeof(char*), strcmp_mod);
if (pItem!=NULL)
printf ("%s is in the array.\n", pItem);
else
printf ("%s is not in the array.\n", key);
return 0;
}