一、qsort的定义:自定义排序
void qsort( void *s, int cnt, sizeof(s[0], cmp));入参分别为首地址、个数、元素的字节数,排序方式;
整型排序:
int cmp( const void *a, const void *b) //从小向大
{
return(*(int *)a - *(int *)b );
}
int cmp( const void *a, const void *b) //从大向小
{
return(*(int *)b - *(int *)a );
}
字符比较:
int cmp2( const void *a, const void *b)
{
return(*(char *)a - *(char *)b );
}
示例:
int main()
{
char *input[]={"fkoo","kdhfio", "yun"};
int cnt=0;
int i;
cnt=sizeof(input)/sizeof(char *);
printf("cnt=%d\n",cnt);
qsort(input, cnt, sizeof(input[0]), cmp1);
for(i=0;i<cnt;i++)
{
printf("%d\n",input[i]);
}
return 0;
}
字符数组比较:
int cmp1( const void *a, const void *b)
{
return(strcmp(*(char **)a, *(char **)b));
}
二、函数定义: char* strtok (char* str,constchar* delimiters );
函数功能:
切割字符串,将str切分成一个个子串
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)。
函数返回值:
当s中的字符查找到末尾时,返回NULL;
如果查不到delimiter所标示的字符,则返回当前strtok的字符串的指针。
用法模型:
char buf[]=”123,7456,854,695”;
char *temp=strtok(buf,”,”);
while(temp)
{
printf(“%s\n”,temp);
temp=strtok(NULL,”,”);
}