问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用qsort对字符串数组排序需要注意的几个问题

发布网友 发布时间:2022-05-12 17:02

我来回答

1个回答

热心网友 时间:2023-10-14 21:52

声明一个字符串指针数组存放每个字符串的首地址,调用库函数qusort按题目要求对字符串指针排序,不移动源字符串。关键是要设计一个好的比较函数,精巧地解决“按长度、长度相等时按大小”排序的问题。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "string.h"#include "stdlib.h"#define N 10 //字符串个数#define LN 21 //*字符串长度为20int mycmp(const void *a,const void *b){//比较函数 char *pa=*(char **)a,*pb=*(char **)b; int x=int(strlen(pa)-strlen(pb));//依长度比较 return x ? x : strcmp(pa,pb);//长度相等时依大小比较}int main(void){ int i=0,j=0; char *f[N],w[LN*N];//声明指针数组f和字符串总空间 printf("Input %d string(s)(length<=%d)...\n",N,LN); while(i<N){//输入并将字符串首址赋给f[i] if(scanf(" %[1234567890]",f[i]=w+j)>0 && strlen(f[i])<LN) i++,j+=LN; else printf("Error, redo: Required length less than %d:",LN); } qsort(f,N,sizeof(char *),mycmp);//调用库函数对字符串指针排序 for(i=0;i<N;printf("%s\n",f[i++]));//输出... return 0;}
求qsort函数的全部用法及使用时需注意的地方

一个典型的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp);其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写s[i]这样的表达式);第二个参数是参与排序的元素个数;第三个参数是单个元素的大小,推荐使用sizeof(s[0])这样的表达式;第四个参数就是让很多人觉得非常困惑的...

...调用 qsort() 对一个字符串数组排序, 但是不行。

你说的 ``字符串数组" 实际上是 ``字符指针数组"。qsort 比较函数的参数是被排序对象的指针, 在这里, 也就是字符指针的指针。然而 strcmp() 只接受字符指针。因此, 不能直接使用 strcmp()。写一个下边这样的间接比较函数:/* 通过指针比较字符串 */ int pstrcmp(const void *p1, const void ...

qsort函数对相同长度的字符串进行strcmp操作时候是如何排序的?

感觉相同的东西,位置应该没有规律,只和它在原来内存中的位置有关系。如果有要求,应该定制一个排序函数

qsort 结构体排序

qsort(s,100,sizeof(s[0]),cmp);六、对字符串进行排序 struct In { int data;char str[100];}s[100];//按照结构体中字符串str的字典顺序排序 int cmp ( const void *a , const void *b ){ return strcmp( (*(In *)a)-&gt;str , (*(In *)b)-&gt;str );} qsort(s,100,sizeof(...

...想用qsort这样的系统自带函数给一个二维数组的某一横行排序怎么做...

要达到问题中的效果,需要在第一个参数传入数据所在行的首地址,第二个参数传入一行中元素的个数,第三行传入每个元素占用的空间,第四个传入自定义的比较函数指针(函数名)。下面就以一个3行4列整型数组a[3][4],对其第二行(a[1])进行升序排序为例,写一个代码,辅助理解。include &lt;stdio.h&gt;...

qsort具体用法

2、对字符串排序:int Comp(const void *p1,const void *p2){ return strcmp((char *)p2,(char *)p1);} int main(){ char a[MAX1][MAX2];initial(a);qsort(a,lenth,sizeof(a[0]),Comp);//lenth 为数组a的长度 3、按结构体中某个关键字排序(对结构体一级排序):struct Node {...

qsort函数使用方法总结(详细全面+代码)

qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), compare);在这里,arr是二维字符串数组,qsort会遍历每个元素的首元素,将其视为char *进行比较。对于整型二维数组的K个最近点问题,需要先计算每个点到原点的距离,然后使用compar函数进行排序。这里不再赘述,但记住调整compar函数以适应...

qsort对vector排序的问题

少年,你舍近求远了 qsort不是和vector配套使用的,所以不能用vector的iterator。qsort适合用来排序原生的数组。用qsort(&amp;rooms[0],……)可以,是因为vector的内部实现是一个整块的内存,&amp;rooms[0]相当于取出了这块内存的首地址。用sort(rooms.begin(), ...)才是STL的做法 ...

c语言 qsort

qsort 要求提供一个 比较函数,是为了做到通用性更好一点。比如你不仅仅的是要排序一个数字而已,可能你要用来排序几个数字 ,比如有一个结构 struct num { int a;int b;};然后我有一个num 类型的数组, num dddd[100];我想给 dddd这个数组排序,那怎么办? 我想让 a +b 最大的num元素排在...

qsort函数使用方法总结(详细全面+代码)

排序二维数组实质上是对第二维度存放的字符串排序。调用`qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), compare)`时,第二个参数表示待排元素数量(5个),第三个参数为元素大小(16)。将`arr`传入`qsort`,理解为指向数组第一个元素的指针。参数`arg1`和`arg2`指向`"指向字符...

java字符串数组排序sort 怎么对字符串数组排序 对字符串内字符进行排序 指针数组排序字符串 c语言字符串数组排序 指针数组解决字符串排序 c语言指针数组字符串排序 c语言二维字符串数组排序 sort可以排序字符串吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...海岸线位置示意图 材料二 “华北地区局部图” (1) 汉朝的平阳公主为什么能有如此大的权力 平阳昭公主相关史料 历史上有多少荷兰藉球员效力过AC米兰,除了三剑客和现役的。 ...完成下列问题.(1)写出下列字母所代表地形区的名称:A___B___C... 家长的错误教育观念对孩子有什么影响? ...要求:(1)写出字母代表的地形名称.C.___ (山脉) D.___ (河_百度知 ... 错误教育对孩子有什么影响 错误的教育方法对孩子成长有什么不利影响? 英语厉害的帮我翻译下这篇文章,有原文的给个地址,要有中文翻译... c语言编程问题,字符串数组排序的问题 有什么你非常喜欢的文案分享一下吗? C语言字符串数组排序问题?只能比大于,不能比小于? 求一个C#字符串数组排序方法 一款能去眼袋的万能水,Zelat万能水,了解加微信LH-yy23 分享一句意难平的文案吧? C语言中字符数组问题,字符串排序? 信用卡吹还款2次了,如果今天还最低还款,还进去,第二天全部取出来还算还款吗? C语言字符串排序问题 C++对字符数组排序 字符串数组排序(C语言)(qsort库函数) 我妹妹没有办理交通银行信用卡这几天一直有银行吹还款,还打电话来给 汪苏泷办过几场演唱会 电影《人生大事》曝预告,这是一部什么题材的电影? 电影《人生大事》将于4月2日全国上映,你会去影院观看吗? 没有上网行为管理设备,能否实现公司网络上网流量数据收集和带宽分配控制 交通违章显示 为 : 违法行为 &quot;其他&quot; 采集方式为 ,闯红灯设备。是什么样的违章行为?提示扣200元 扣分吗 如何评价固态硬盘厂商的一,二,三线 用premiere pro 2.0 采集高清,显示采集设备脱机,但是可以控制播放等行为 网上的视频怎么下载呀? C++关于字符串数组的字典排序。。求高手指点错误 c 语言 字符串数组 排序 c语言字符数组排序问题 看如下代码 菲拉格慕和巴宝莉哪个档次高 c++字符串数组排序 Java中怎么对数组中的字符串进行排序 三本主角有锦鲤体质的小说,年代文,古言文,修真文 C++ 用qsort()实现字符串数组元素排序问题。 C语言,指针与字符数组排序问题 七十年代锦鲤村花_by狐珠子_txt全文阅读,百度网盘免费下载 虎纹熊仓鼠的手掌圆圆黄黄的球,那是什么东西? 八零年代锦鲤美人_by雀鸣_txt全文免费阅读 在锦鲤文中当首富_by曹家大小姐_txt全文免费阅读 《穿成六零锦鲤福气包[穿书]》txt下载在线阅读全文,求百度网盘云资源 汽车怠速时发出异响,这具体是什么问题? 发动机皮带异响的原因 车辆怠速有异响什么情况? 伊兰特发动机舱怠速时皮带哪里咯吱咯吱响怎么回事? 问个发动机皮带处异响问题 sritual rosie是什么意思 衣服上边的