stdlib.h的qsort函数怎么去用
stdlib.h的qsort函数如何去用?
原形是void qsort(void *base, size_t num, size_t
width, int
(_cdecl * compare)(const void *,const void *));
为什么下面的程序在VC下会出错?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void main( )
{ int i;
char list[5][4] ={“car”,“cat”,“cab”,“cap”,“can”};
qsort( (void *)list, 5, sizeof( list[0] ), strcmp );
for( i = 0; i < 5; ++i )
printf( “ %s”, list[ i ] );
printf( “\n” );
}
提示错误是:cannot convert parameter 4 from 'int (const char *,const char *) ' to 'int (__cdecl *)(const void *,const void *) '
还想问问_cdecl是个什么内型?
------解决方案--------------------
函数申明: void qsort(void *base, size_t nelem, size_t width, int (*fcmp)(const void *, const void *)
函数用途: 使用快速排序(C.A.R.Hoare发明的排序方法)对数组base进行排序
头 文 件: stdlib.h
输入参数: base: 待排序的数组;melem:数组的元素个数;width:每个元素的大小
fcmp: 用于数组元素比较的函数指针,该函数由自己另外编写,有2各参数,
并且比较结果如下:
<0; arg10; arg1> arg2
例如对字符串比较的函数可编写如下:
int fstrcmp(char *arg1,char *arg2)
{
strcmp(arg1,arg2);
}
输出参数: base:以升序排列的排序结果
原形是void qsort(void *base, size_t num, size_t
width, int
(_cdecl * compare)(const void *,const void *));
为什么下面的程序在VC下会出错?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void main( )
{ int i;
char list[5][4] ={“car”,“cat”,“cab”,“cap”,“can”};
qsort( (void *)list, 5, sizeof( list[0] ), strcmp );
for( i = 0; i < 5; ++i )
printf( “ %s”, list[ i ] );
printf( “\n” );
}
提示错误是:cannot convert parameter 4 from 'int (const char *,const char *) ' to 'int (__cdecl *)(const void *,const void *) '
还想问问_cdecl是个什么内型?
------解决方案--------------------
函数申明: void qsort(void *base, size_t nelem, size_t width, int (*fcmp)(const void *, const void *)
函数用途: 使用快速排序(C.A.R.Hoare发明的排序方法)对数组base进行排序
头 文 件: stdlib.h
输入参数: base: 待排序的数组;melem:数组的元素个数;width:每个元素的大小
fcmp: 用于数组元素比较的函数指针,该函数由自己另外编写,有2各参数,
并且比较结果如下:
<0; arg10; arg1> arg2
例如对字符串比较的函数可编写如下:
int fstrcmp(char *arg1,char *arg2)
{
strcmp(arg1,arg2);
}
输出参数: base:以升序排列的排序结果