我希望使用stdlib
函数qsort
对字符串数组进行排序。
我有填充的数组:char *words[MAX_WORDS];
和比较函数:
int compare_words(const void *p, const void *q) {
printf("%s\n", (const char*)p); // For debugging
return strcmp((const char*)p, (const char*)q);
}
使用qsort
来电:qsort(words, i, sizeof(char*), compare_words);
我可以通过打印告诉我已插入compare_words
函数,qsort没有将正确的参数传递给compare_words
。 (它打印垃圾)。关于它为什么没有得到正确的char指针的任何想法?
答案 0 :(得分:4)
qsort
传递指向数组元素的指针,因此您实际上是const char **
而不是const char*
。
特别是,将这些指针打印为const char*
会将输入数组的某些部分打印为文本,因此很明显你会得到垃圾。