| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1656 人关注过本帖
标题: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
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册: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
快速回复:qsort对结构体二级排序怎么实现
数据加载中...
 
   



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

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