c语言中qsort 和 strtok函数用法

一、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,”,”);
}

猜你喜欢

转载自blog.csdn.net/caozhigang129/article/details/81461000