我在排序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