【问题标题】:Array-strings sorted using qSort in C在 C 中使用 qSort 排序的数组字符串
【发布时间】:2011-05-02 22:50:15
【问题描述】:

问题很简单:返回“qsort”的有序数组通过某种方式反向返回,即我想避免使用任何辅助数组来投资使用 qsort 的结果数组。

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

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <string.h>

            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;
            }

【问题讨论】:

  • 返回 -1 * strcasecmp(*ia, *ib);可能会奏效。如果反转比较函数,则数组将反转。

标签: c arrays qsort


【解决方案1】:

您是否尝试过将参数的顺序颠倒到 strcasecmp?

return strcasecmp(*ib, *ia);

【讨论】:

    【解决方案2】:

    这是你想要的吗?

            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 */
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2010-12-20
      • 2013-04-19
      • 2011-04-15
      相关资源
      最近更新 更多