源程序:
#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;
}
運行結果: