"dict.txt"라는 정렬되지 않은 사전 파일이 있습니다. 나는 파일의 단어를 배열에 넣을 수 있었고 qsort()도 내가 잘 사용하고있는 것 같다. (배열이 정렬되어있다.)bsearch() 호출에서 제시 프로그램이 중단되는 이유는 무엇입니까?
왜 이런 일이 : 나는 bsearch(), 프로그램 충돌을 부르는 나의 문제는 때
문제가 발생합니다?
gcc를 사용하여 컴파일하고 어떤 종류의 IDE도 사용하지 않으므로 디버거가 없으므로 사용 방법을 알지 못합니다.
여기에 제시된 코드에는 몇 가지 문제가있을 수 있습니다.
왜냐하면 저는 매우 새로운데 내 배경은 주로 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;
}
printf()를 strcmp_mod 함수에 넣으면 ... 무엇이 (그리고 심지어 유효한 문자열 이건간에) 비교 대상을 정확히 볼 수 있으므로, 디버거. – Eric