/*
(3*) 用指向指针的指针实现对已有的8 个字符串进行排序,并输出排序后的结果。
测试输入数据:January, February, March, April, May, June, July, September
预期输出:May July June April March January Februrary September
实现要求:
①排序的规则为:先比较两个字符串的长度,长度短的字符串排在前面,如果长度相等,
则比较字符串的值,按从小到大排序输出。
②用字符串数组存放各字符串,并在定义数组时对其进行初始化。
③利用库函数qsort实现排序操作。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int coutLength(char *a,char *b);
int comp(const void *a,const void *b);
int i,j;
char *x[20]/*[][20]*/={"January","February","March","April","May","June","July","September"};
char temp[20]="sdfiu";
strcpy(*(x+1),temp);
printf("%s",x[1]);
for(i=0;i<7;i++)
{
for(j=i+1;j<8;j++)
{
if(coutLength(x[i],x[j])==1)
{
strcpy(temp,x[i]);
strcpy(x[i],x[j]);
strcpy(x[j],temp);
}
else
{
qsort((void *)x,2,sizeof(x[0]),comp);
}
}
}
for(i=0;i<7;i++)
{
printf("%s ",x[i]);
}
return 0;
}
//比较字符串长度,如果等长返回0,前者长返回1,后者长返回-1.
int coutLength(char *a,char *b)
{
int i;
int lengthOfa=0,lenghtOfb=0;
for(i=0;*(a+i)!='\0';i++)
{
lengthOfa++;
}
for(i=0;*(b+i)!='\0';i++)
{
lenghtOfb++;
}
if(lengthOfa==lenghtOfb)
{
return 0;
}
else if(lengthOfa>lenghtOfb)
{
return 1;
}
else
{
return -1;
}
}
int comp(const void *a,const void *b)
{
return (strcmp(*(char **)a,*(char **)b));
}
是这样一道题,我不知道该怎么用那个库函数了
上面的代码是错的,
但是大体体现了我的思想。。