编写一个程序用指向指针的指针的方法对n个字符串排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出
时间: 2024-03-10 22:48:36 浏览: 71
好的,以下是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort(char **p, int n);
int main() {
int n, i;
printf("请输入字符串个数n:");
scanf("%d", &n);
// 动态分配n个指针变量的空间
char **p = (char**)malloc(n * sizeof(char*));
printf("请输入%d个字符串:", n);
for (i = 0; i < n; i++) {
// 动态分配每个字符串的空间,并将指针赋给p[i]
char str[100];
scanf("%s", str);
p[i] = (char*)malloc(strlen(str) + 1);
strcpy(p[i], str);
}
// 调用排序函数
sort(p, n);
// 输出排序后的结果
printf("排序后的结果为:");
for (i = 0; i < n; i++) {
printf("%s ", p[i]);
}
// 释放动态分配的内存空间
for (i = 0; i < n; i++) {
free(p[i]);
}
free(p);
return 0;
}
void sort(char **p, int n) {
int i, j;
char *temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (strcmp(p[j], p[j + 1]) > 0) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
```
这个程序中,我们使用了指向指针的指针p,动态分配n个指针变量的空间,用于存储n个字符串的地址。然后我们对每个字符串动态分配空间,并将其地址赋给p[i]。在sort函数中,我们通过*p来访问p所指向的内存空间,也就是n个字符串的地址,然后使用strcmp函数来比较字符串大小,从而实现排序。最后在主函数中输出排序后的结果,并释放动态分配的空间。
阅读全文