我在排序C中的qsort()
char字符串时遇到问题。 我想按字符串的长度对数组进行排序。如何通过qsort对C中char字符的3D数组进行排序
我发现这个代码进行排序二维数组:
int compare(const void *name1, const void *name2)
{
const char *name1_ = *(const char **)name1;
const char *name2_ = *(const char **)name2;
return strcmp(name1_, name2_);
}
而且我修改了代码,以这样的:
int compare(const void *name1, const void *name2)
{
const char *name1_ = *(const char ***)name1;
const char *name2_ = *(const char ***)name2;
if(strlen(name1_)>strlen(name2_))
{
return 1;
}
if(strlen(name1_)<strlen(name2_))
{
return -1;
}
else
{
return 0;
}
}
但是,这并不工作,我不知道如何做到这一点。
例如。我想这样的排序数组:
char * array1 [][2] = {
{ "murderer", "termination specialist" },
{ "failure", "non-traditional success" },
{ "specialist", "person with certified level of knowledge" },
{ "incorrect answer", "alternative answer" }
};
为此格式:
char * array1 [][2] = {
{ "incorrect answer", "alternative answer" },
{ "specialist", "person with certified level of knowledge" },
{ "murderer", "termination specialist" },
{ "failure", "non-traditional success" }
};
什么不行?编译错误...逻辑错误... –
显示你的数组是如何定义的,并通过排序3D数组来确切解释你的意思。排序只在一个维度上有意义。有了多个维度,您需要额外的条件。 – paddy