我尝试使用qsort对字符串数组进行排序。我的程序将采用整数值,然后根据整数值输入字符串,然后允许输入另一个整数值以及许多字符串。然后我尝试使用qsort按降序对输入的字符串进行排序,但它只是打印输入它们的顺序。
int sort(const void* a, const void* b)
{
char* s_a = *(char**)a;
char* s_b = *(char**)b;
return (strlen(s_b) - strlen(s_a));
}
int main(void)
{
char input[100];
int n;
int j;
int l;
scanf("%d", &n);
char** strings = malloc(n * sizeof(char*));
int i;
for (i = 0; i < n; i++) {
scanf("%s", input);
strings[i] = malloc(strlen(input) + 1);
strcpy(strings[i], input);
}
int m;
scanf("%d", &m);
strings = realloc(strings, (n + m) * sizeof(char*));
for (i = n; i < m + n; i++) {
scanf("%s", input);
strings[i] = malloc(strlen(input) + 1);
strcpy(strings[i], input);
}
int k = m + n;
qsort(strings, l, 100, sort);
for (j = 0; j < k; j++) {
printf("%s", strings[j]);
printf("\n");
}
}