利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。
#define N 5
#define M 8
void fun(char (*ss)[M])
{
char *ps[N], *tp;
int i, j, k;
for (i = 0; i < N; i++)
ps[i] = ss[i];
for (i = 0; i < N - 1; i++)
{
k = i;
for (j = i + 1; j < N; j++)
if (strlen(ps[k]) < strlen(ps[j]))
k = j;
tp = ps[i];
ps[i] = ps[k];
ps[k] = tp;
}
printf("The string after sorting by length:\n");
for (i = 0; i < N; i++)
puts(ps[i]);
}
int main()
{
char ch[N][M] = {"red", "green", "blue", "yellow", "black"};
int i;
printf("The original string:\n");
for (i = 0; i < N; i++)
puts(ch[i]);
printf("\n");
fun(ch);
}
程序结果: