排序串的数组
将串集合重新按顺序排列。将串读入一个缓冲器,这个缓冲器足以容纳所有的串,设置指针来指向数组中的每个串,然后重排这些指针,将最小串的指针放在数组的首位,将次小串的指针放在数组的第二位,依次类推 。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Nmax 1000
#define Mmax 10000
char buf[Mmax];int M=0;
int compare(void *i,void *j)
{
return strcmp(*(char **)i,*(char **)j);
}
int main()
{
int i,N;
char* a[Nmax];
for(N=0; N<Nmax; N++)
{
a[N]=&buf[M];
if(scanf("%s",a[N])==EOF) break;
M+=strlen(a[N])+1;
}
qsort(a,N,sizeof(char*),compare);
for(i=0; i<N; i++) printf("%s\n",a[i]);
return 0;
}
#include<string.h>
#define Nmax 1000
#define Mmax 10000
char buf[Mmax];int M=0;
int compare(void *i,void *j)
{
return strcmp(*(char **)i,*(char **)j);
}
int main()
{
int i,N;
char* a[Nmax];
for(N=0; N<Nmax; N++)
{
a[N]=&buf[M];
if(scanf("%s",a[N])==EOF) break;
M+=strlen(a[N])+1;
}
qsort(a,N,sizeof(char*),compare);
for(i=0; i<N; i++) printf("%s\n",a[i]);
return 0;
}