【发布时间】:2022-11-12 18:36:43
【问题描述】:
我正在尝试构建一个 qsort 函数,该函数将对我的指针数组中的单词进行唯一排序**allwords。但是我在某个地方出错了,我做错了什么? (对 C 很陌生)
static int intcmp(const void *a, const void *b) {
const int *left = a;
const int *right = b;
return *left - *right;
}
【问题讨论】:
-
如果它真的是一个“数组 if 指针”,那么您的间接级别浅了一个。当然,我们相信你说的是你的意思。除非您发布正确的minimal reproducible example,否则我们不确定,该minimal reproducible example 构建您的待排序数据并将其和此功能呈现给qsort。不相关,如果它是
int数组,而不是int*数组,则此函数可以“工作”,但可能下溢,并且将降序排序,而不是升序排序,这又是我们不知道的意图。当你说你想要“排序单词”时,我非常怀疑你离得很近。 -
所以你的意思是“词”机器字?您假设哪个对应于类型
int?如果您指的是人类语言单位意义上的“单词”,那么您将需要一些完全不同的东西。 -
另外,独特性与它有什么关系?如果您确实有一个指针数组,那么您是在尝试按指针本身还是按它们指向的值进行排序?
-
编辑问题以提供minimal reproducible example。
-
通常,唯一排序意味着丢弃重复条目。使用
qsort和普通的比较函数来做到这一点很棘手(如果不是不可能的话),因为这不是qsort设置要做的事情。
标签: c c-strings string-comparison function-definition qsort