请教用qsort排序指针数组

nikshuang2 2007-12-04 01:34:14
如题, 要排序的是: char **p_list, p_list的长度知道,p_list[i]的长度各异。
请大家帮忙用qsort排序下p_list, 谢谢
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikshuang2 2007-12-04
  • 打赏
  • 举报
回复
顶楼上的,应该就是这样
霁云 2007-12-04
  • 打赏
  • 举报
回复
不知道lz意思,一下代码可用


#define _countof(x) (size_t)(sizeof (x) / sizeof (x[0]))

int compare(const void* rhs, const void* lhs)
{
return strcmp(*(char**)rhs, *(char**)lhs);
}

void main(void)
{
char* pszList [] =
{
"abc\n",
"bcd\n",
"234\n",
"efh\n",
"1234\n",
"1234567890\n"
};

qsort(pszList, _countof(pszList), sizeof(const char*), compare);
copy(pszList, pszList + _countof(pszList), ostream_iterator<const char*>(cout));
}

chlaws 2007-12-04
  • 打赏
  • 举报
回复
狂汗.楼主哈你要排指针数组就明说哈,干吗搞出个2级指针
lovelyday 2007-12-04
  • 打赏
  • 举报
回复
是指针数组排序吧,下面这个没用qsort

#include <stdio.h>
#include <string.h>
void sort(char *p_list[],int n)
{
int i,j;
char *temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strlen(p_list[i])<strlen(p_list[j]))
{
temp=p_list[i];
p_list[i]=p_list[j];
p_list[j]=temp;
}
}
}
}
void main()
{
char *p_list[]={"wednesday","tuesday","saterday","sunday"};
sort(p_list,4);
for(int i=0;i<4;i++)
printf("%s\n",p_list[i]);
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧