错得远了点。char *a[100];是声明了100个cahr *型指针的数组,即每个元素是一个char *型指针。可是后面的for循环用a[i]=e;使所有元素(指针)都指向了同一个字符串的首地址e,这有什么意义?你是不是理解成char *型指针可以存放字符串?那是大错——指针只能“指向”字符串首址而不能存放字符串!
手上没有你用的编译器,用vs改了一下
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int i;
void paixu(char *b[]);
int main()
{
char *a[100];
int j;
char e[10];
printf("请输入字符串个数:\n");
scanf("%d", &i);
printf("请依次输入字符串:\n");
for (j = 0; j <= i - 1; j++)
{
scanf("%s", e);
a[j] = new char[strlen(e) + 1];
strcpy(a[j], e);
}
paixu(a);
for (j = 0; j <= i - 1; j++)
{
delete a[j];
}
return 0;
}
void paixu(char *b[])
{
int k, l;
char *p;
for (k = 0; k <= i - 1; k++)
{
for (l = k; l <= i - 1; l++)
{
if (strcmp(b[k], b[l]) >= 0)
{
p = b[k];
b[k] = b[l];
b[l] = p;
}
}
}
printf("升级排列后的结果为:\n");
for (k = 0; k <= i - 1; k++)
printf("%s\t", b[k]);
}