#include
#include
int main()
{
void sort(char **p,int m);
int i,n;
char **p,pstr[50],str[50][50];
printf("输入n:");
scanf("%d",&n);
for(i=0;i<50;i++)
pstr[i]=str[i];
printf("输入%d个字符串:\n",n);
for(i=0;iscanf("%s",pstr[i]);
p=pstr;
sort(p,n);
printf("排序后的字符串为:");
for(i=0;iprintf("%s\n",pstr[i]);
printf("\n");
return 0;
}
void sort(char **p,int m)
{
int i,j;
char *t;
for(i=0;ifor(j=i+1;jif(strcmp(*(p+i),*(p+j))>0)
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
}
}
题主代码修改如下,pstr[50] 应定义为指针数组 *pstr[50],供参考:
#include <stdio.h>
#include <string.h>
int main()
{
void sort(char** p, int m);
int i, n;
char** p, *pstr[50], str[50][50]; //修改
printf("输入n:");
scanf("%d", &n);
for (i = 0; i < 50; i++)
pstr[i] = str[i];
printf("输入%d个字符串:\n", n);
for (i = 0; i < n; i++)
scanf("%s", pstr[i]);
p = pstr;
sort(p, n);
printf("排序后的字符串为:\n");
for (i = 0; i < n; i++)
printf("%s\n", pstr[i]);
printf("\n");
return 0;
}
void sort(char** p, int m)
{
int i, j;
char* t;
for (i = 0; i < m; i++)
{
for (j = i + 1; j < m; j++)
{
if (strcmp(*(p + i), *(p + j)) > 0)
{
t = *(p + i);
*(p + i) = *(p + j);
*(p + j) = t;
}
}
}
}