好的,所以我需要在 C 中处理几个相当长的字符串。所以我对自己说“为什么,你最好使用那个方便的花花公子 qsort 函数!最好给自己写一个 string_comarator !”
所以我当然愿意,她在这里:
int string_comparator(const void* el1, const void* el2) {
char* x = (char*) el1;
char* y = (char*) el2;
int str_len = strlen(x);
int i = 0;
for (; i < str_len; i++) {
//when there are non-equal chars
if (x[i] != y[i]) {
break;
}
}
return x[i] - y[i];
}
所以当然我将我方便的花花公子 string_comarator 函数传递给 C qsort 函数,如下所示:
qsort(list.words, list.num_words, sizeof(char*), string_comparator);
list 是一个结构,它包含一个 char** (words) 和 ints,它指代它所持有的单词数 (例如 num_words)
现在我遇到的问题是我的列表没有像我希望的那样按字母顺序排序!我在比较器中放了一堆 printf 语句,它每次都打印出字符串的垃圾值,所以我很确定这是问题所在。但是为什么会出现这个问题??我以前使用过 qsort (从不对单词进行排序..只是对字符进行排序),据我所知,这应该可以工作......这里出了什么问题?
我很感激任何建议!