C语言中sqort函数里面的比较函数怎么写?

u010045303 2013-03-26 08:11:36
C语言中sqort函数里面的比较函数怎么写?为什么我看到所有程序都是在形参中定义void类型而不是实参传递的类型?而又在比较函数内部进行类型转换?

比如说我这个程序:

int own_compare(char a[],char b[])

{

return(strcmp(a,b));//这样写会报错。。。

}

int main()

{

char t[10][20]={"abcd","sdfghjkqwer","dfghjkqwer","fghjkqwer","ghjkqwer","hjkqwer","jkqwer","kqwer","qwer","wer"};

qsort(t,10,sizeof(t[0]),own_compare);

for(int i=0;i<10;i++)

{

puts(t[i]);

}

getchar();

}
...全文
310 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2013-03-27
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int own_compare(const void *v1, const void *v2)
{
    const char *p1, *p2;

    p1 = (const char *)v1;
    p2 = (const char *)v2;
    return strcmp(p1, p2);
}

int main(int argc, char *argv[])
{
    int i;
    char t[10][20]={"abcd","sdfghjkqwer","dfghjkqwer","fghjkqwer","ghjkqwer","hjkqwer","jkqwer","kqwer","qwer","wer"};

    qsort(t,10,sizeof(t[0]),own_compare);
    for(i=0;i<10;i++)
        puts(t[i]);

    return 0;
}
AnYidan 2013-03-26
  • 打赏
  • 举报
回复
void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *)) qsort sorts into ascending order an array base[0]...base[n-1] of objects of size size. The comparison function cmp is as in bsearch.
cyneuzk 2013-03-26
  • 打赏
  • 举报
回复
char str[100]; 
}s[100];
int own_compare(const void *a,const void *b)
{
 return strcmp(((In *)a)->str,((In *)b)->str); 
}

int main()

{
    char t[10][20]={"abcd","sdfghjkqwer","dfghjkqwer","fghjkqwer","ghjkqwer","hjkqwer","jkqwer","kqwer","qwer","wer"};
    qsort(t,10,sizeof(t[0]),own_compare);
    for(int i=0;i<10;i++)
    {
        puts(t[i]);
    }
    getchar(); 
} 
形参类型不对应

70,020

社区成员

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

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