在C中使用qSort排序的数组字符串

问题很简单:有一些方法可以反过来返回返回“qsort”的有序数组,即我想避免使用任何辅助数组来使用qsort投资生成的数组。

这是我的代码,它从要排序的标准输入字符串中读取,并使用比较函数进行排序。

#include  #include  #include  #include  #include  int cstring_cmp(const void *a, const void *b) { const char **ia = (const char **)a; const char **ib = (const char **)b; return strcasecmp(*ia, *ib); /* strcmp functions works exactly as expected from comparison function */ } 

在此先感谢您的回复,对不起我的英语

  int main (int argc, char *argv []) { int number; char temp [4000]; printf("input number: "); scanf("%d",&number); char* array_string [number]; int i; for (i=0;i<number;i++) { scanf(" %[^\n]", temp); array_string [i] = (char*)malloc((strlen(temp)+1)*sizeof(char)); strcpy(array_string[i], temp); } size_t large = sizeof(array_string) / sizeof(char *); qsort(array_string,large ,sizeof(char *) ,cstring_cmp ); printf ("\n"); printf ("the sorted array list is:\n"); for (i=0;i<large;i++) printf("%s\n", array_string [i]); return 0; } 

这样做你想要的吗?

  int cstring_cmp(const void *a, const void *b) { const char **ia = (const char **)a; const char **ib = (const char **)b; return -strcasecmp(*ia, *ib); /* return the negative of the normal comparison */ } 

您是否尝试将参数的顺序反转为strcasecmp?

return strcasecmp(*ib, *ia);