#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2 /*根據字符串的長度排序,由長到短*/
void sort(char *p[N]);
void main() {
#if 0 char str[N][50];/*保存字符串的二維數組,每個字符串的最大長度是50*/
int i; char *p[N];/*聲明指針數組,保存二維數組每一行的地址*/
printf("請輸入%d個字符串:\n",N) ; #else int i; char *p[N];/*聲明指針數組,保存二維數組每一行的地址*/
char **str=(char**)malloc(sizeof(char*)*N);
for( i=0;i<N;i++) str[i] = (char*)malloc(sizeof(char)*50);
printf("請輸入%d個字符串:\n",N) ;
#endif
for(i=0;i<N;i++) scanf("%s",str[i]); // gets(str[i]);/*初始化二維數組*/
for(i=0;i<N;i++) {
/*初始化指針數組*/ p[i]=str[i]; }
sort(p); system("pause"); }
void sort(char *p[N]) {
int i,j;
char *t;
printf("由長到短排序:\n");
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++) {
if(strlen(p[i])<strlen(p[j])) {
t=p[i];
p[i]=p[j];
p[j]=t; }
}
for(i=0;i<N;i++)
puts(p[i]);/*輸出排序后的結果*/
}
