`
java-mans
  • 浏览: 11380453 次
文章分类
社区版块
存档分类
最新评论

qsort()实现对字符数组的排序

 
阅读更多

一、首先来看一个程序

#include <cstdio>
int main()
{
	char *a[10]={"111","222"};
	printf("%s\n%s\n%s\n",a,*a,a[0]);
	printf("%d:\t%s\n",sizeof(a[0]),a[1]);
	printf("\n\n");
	char b[10][10]={"111","222"};
	printf("%s\n%s\n%s\n",b,*b,b[0]);//效果一样,不要问我为什么,我也不知道。
	printf("%d:\t%s\n",sizeof(b[1]),b[1]);
	return 0;
}

/*
sizeof(a)		等于a所指向对象的长度
char *a[n];		a[i]为字符串首地址,a为第一个字符串首地址的地址,sizeof(a[0])=4;
char a[n][m];	a[i]为字符数组,a为第一个字符串首地址,sizeof(a[0])=m;
*/


二、两个排序程序

#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
	char **pa=(char **)a;
	char **pb=(char **)b;
	return strcmp(*pa,*pb);
}
int main()
{
	char *a[3]={"222","111","333"};
	qsort(a,3,sizeof(a[0]),cmp);
	printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
	return 0;
}
/*
这里的a是指针的指针,所以在cmp中要首先转换成(char**)形式,然后使用*pa和*pb转换成指针(即:字符串首地址),strcmp(*pa,*pb)对字符串进行排序即可
*/


//////////////////////////////////////////
#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
	char *pa=(char *)a;
	char *pb=(char *)b;
	return strcmp(pa,pb);
}
int main()
{
	char a[3][10]={"222","111","333"};
	qsort(a,3,sizeof(a[0]),cmp);
	printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
	return 0;
}
/*
这里的a直接就是地址,所以在cmp中只需要转换成(char*)形式,这时pa和pb直接就是字符串首地址,所以直接使用strcmp(pa,pb)即可
更好的理解:将a看做一维数组,数组里面元素为字符串
*/

参考网址:http://c.chinaitlab.com/c/skill/200907/790644.html

分享到:
评论

相关推荐

    通讯录排序代码整理与源码

    使用qsort函数来对结构体数组进行快速排序,提高效率和简化代码。 使用atoi函数来将字符串形式的生日转换为整数形式,便于比较和计算年龄。 使用结构体数组来存储通讯录的信息,方便进行排序和输出。 使用qsort函数...

    用折半查找法实现排序问题

    QSort(Array, 0, Array.length - 1);// 调用快速排序(升序) if (!updown) { double num; int low = 0, high = Array.length - 1; for (; low ; low++, high--) { num = Array[low];//数组...

    数据结构算法实现(严蔚敏版配套实现程序)

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    数据结构算法实现(严蔚敏版配套实现程序)

    数据结构算法实现(严蔚敏版配套实现程序) 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 ...

    数据结构(王)c元代码

    这是数据结构里面的伪代码的c实现 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一...

    数据结构 严蔚敏 代码

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    8.5 例子:用qsort()进行排序 8.6 例子:带参数的宏 8.7 stdio.h和ctype.h中的宏 8.8 条件编译 8.9 预定义的宏 8.10 “#”和“##”操作符 8.11 assert()宏 8.12 使用#error和#pragma 8.13 行号 8.14 对应的函数 ...

    你必须知道的495个C语言问题

    2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 ...

    C语言FAQ 常见问题列表

    例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有...

    C语言通用范例开发金典.part1.rar

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4...

    C语言通用范例开发金典.part2.rar

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    C 开发金典

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4...

    百度笔试题和答案

    这些是百度的面试题和答案解答,挺详细的: ...1.c库函数 qsort 2.N!的尾部连续0的个数 3.url是首页、目录页或者其他url 4.删除混合编码中的ansi字符 5.快速排序 6.找出数组中第k大小的数(上节) 7.重要网页

    你必须知道的495个C语言问题(PDF)

    回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main() 正确吗? . . . . . . . . ...

    DES数据加密

    把256个随机数放在一个距阵中,然后对他们进行排序,使用这样一种方式(我们要记住最初的位置)使用最初的位置来产生一个表,随意排序的表,表中的数字在0到255之间。如果不是很明白如何来做,就可以不管它。但是,...

    P2P视频技术源码(VC)

    compareNet是在qsort中用到的一个函数, 对找到的NPPeer进行排序, 让同一个网络 中的NPPeer排在前面. 4) 图管理 在目前的CP, SP, NP中, CP可以同时加入多个频道, 而NP也可以有多个资源, 为了描述 这种结构, 引入了图...

    P2P视频播放器 详细制作实例

    compareNet是在qsort中用到的一个函数, 对找到的NPPeer进行排序, 让同一个网络 中的NPPeer排在前面. 4) 图管理 在目前的CP, SP, NP中, CP可以同时加入多个频道, 而NP也可以有多个资源, 为了描述 这种结构, 引入了...

Global site tag (gtag.js) - Google Analytics