我有一个整数文件。
我将这些值逐行读取到数组中。我正试着对每一行进行快速排序。排序似乎成功,直到数组值完全停止打印。
我引用:one websiteanother website作为指导,因为我觉得这个问题与我设置的size_t n_len = sizeof((*array)/sizeof(array));不正确有关。
以下仅为相关代码:

int int_cmp(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

while ((p = fgets(line, MAX_LINE_LEN, fp)) != NULL) {

    p += strspn(p, " \t\n");
    if (*p == '#' || *p == '\0') {

        continue;
    }

    for (count = 0; *p != '\0'; ) {
        if (isdigit((unsigned char)*p)) {
            array[count++] = strtol(p, &p, 10);
        } else {

            p += strcspn(p, " \t\n");
        }

        p += strspn(p, " \t\n");
    }

    size_t n_len = sizeof((*array)/sizeof(array));
    qsort(array, n_len, sizeof(int), int_cmp);

    int n;
    for (n = 0; n < n_len; n++)
        printf("sorted array:%d\n ", array[n]);
}

输出如下:
sorted array:1
 sorted array:2
 sorted array:3
 sorted array:4

sorted array:14
 sorted array:14
 sorted array:48
 sorted array:62

sorted array:1
 sorted array:3
 sorted array:5
 sorted array:7

sorted array:123
 sorted array:456
 sorted array:789
 sorted array:1234

sorted array:34
 sorted array:34
 sorted array:34
 sorted array:34

sorted array:1

 sorted array:34
 sorted array:34
 sorted array:34

sorted array:1
 sorted array:2
 sorted array:2
 sorted array:2

输出应为:
sorted array:1
sorted array:2
sorted array:3
sorted array:4
sorted array:4
sorted array:5
sorted array:5
sorted array:5
sorted array:6

sorted array:14
sorted array:14
sorted array:48
sorted array:62

sorted array:1
sorted array:3
sorted array:5
sorted array:7
sorted array:9

sorted array:123
sorted array:456
sorted array:789
sorted array:1234
sorted array:5678

sorted array:34
sorted array:34
sorted array:34
sorted array:34

sorted array:1
sorted array:1
sorted array:1
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:3
sorted array:3
sorted array:4
sorted array:4
sorted array:4
sorted array:5
sorted array:5
sorted array:6
sorted array:7
sorted array:7
sorted array:7

最佳答案

听BluePixy在qsort调用中将“n_len”参数替换为“count”。

10-07 19:12
查看更多