无法使用qsort对字符串数组进行排序

时间:2017-03-04 00:54:01

标签: c arrays sorting

我尝试使用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");
    }
}

0 个答案:

没有答案