源程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LINEMAX 20 /*定义字符串的最大长度*/
void sort(char** p) /*冒泡法对5个字符串排序函数*/
{
int i, j;
char *temp;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5-i-1; j++)
{
if (strcmp(*(p + j), *(p + j+1)) > 0) /*比较后交换字符串地址*/
{
temp = *(p + j);
*(p + j) = *(p + j+1);
*(p + j+1) = temp;
}
}
}
}
int main()
{
int i;
char *pstr[5],str[5][LINEMAX];
char **p;
for (i = 0; i < 5; i++)
pstr[i] = str[i]; /*将第i个字符串的首地址赋予指针数组 pstr 的第i个元素*/
printf("input 5 strings:\n");
for (i = 0; i < 5; i++)
scanf("%s", pstr[i]);
p = pstr;
sort(p);
printf("strings sorted:\n");
for (i = 0; i < 5; i++)
printf("%s\n", pstr[i]);
return 1;
}
运行结果: