qsort以词典方式对c中的字符串进行排序

时间:2016-05-13 22:22:47

标签: c pointers qsort

我希望使用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指针的任何想法?

1 个答案:

答案 0 :(得分:4)

qsort传递指向数组元素的指针,因此您实际上是const char **而不是const char*

特别是,将这些指针打印为const char*会将输入数组的某些部分打印为文本,因此很明显你会得到垃圾。