我如何使用qsort按字母顺序对2d数组的字符串进行排序,如果我有4行数组且每行有一个> = 50个字符的字符串,那么这个字符串有一个例子的字符串...我怎么能用qsort函数按字母顺序排序字符串?
我用过这个
qsort(arr, i, 500*sizeof(arr[0]), compare);
for (j=0; j<i; j++) {
printf("%s\n",arr[j]);
}
我使用的比较器是
int compare (const void * a, const void * b ) {
return strcmp(a, b);
}
但它在尝试编译时给出了分段错误错误
答案 0 :(得分:2)
这样就行了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define size 10
int compare (const void * a, const void * b ) {
return strcmp(*(char **)a, *(char **)b);
}
int main () {
char *arr[size];
char buf[1000];
for (int i=0;i<size;i++) {
arr[i]=strdup (gets (buf)); // using gets is risky because it can write past buf
}
qsort (arr, size, sizeof (char*), compare);
for (int i=0;i<size;i++) {
printf ("%s\n", arr[i]);
free (arr[i]);
}
}