标题:qsort对结构体二级排序怎么实现
只看楼主
晓骁龙
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2016-11-27
 问题点数:0 回复次数:1 
qsort对结构体二级排序怎么实现
先对字符串排序,字符串相同然后对data排序
struct In
{
int data;
char str[100];
}s[100];
搜索更多相关主题的帖子: 结构体 字符串 
2016-12-01 14:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct In
{
    int data;
    char str[100];
};

int In_Compare( const void* a, const void* b )
{
    struct In* pa = (struct In*)a;
    struct In* pb = (struct In*)b;

    int v = strcmp(pa->str,pb->str);
    if( v != 0 )
        return v;

    if( pa->data < pb->data ) return -1;
    if( pa->data > pb->data ) return +1;
    return 0;
}

int main( void )
{
    struct In s[] = { {2,"b"}, {1,"b"}, {3,"a"} };
    qsort( s, sizeof(s)/sizeof(*s), sizeof(*s), &In_Compare );

    for( size_t i=0; i!=sizeof(s)/sizeof(*s); ++i )
        printf( "%s --- %d\n", s[i].str, s[i].data );

    return 0;
}
2016-12-01 16:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471853-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094096 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved