再优化一下,最终返回一个新的字符串数组
时间: 2024-02-24 08:56:22 浏览: 56
好的,我们可以定义一个函数,将排序后的字符串列表复制到一个新的字符串数组中,并返回该字符串数组的指针。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义比较函数
int cmp(const void *a, const void *b) {
return strcmp(*(const char**)a, *(const char**)b);
}
// 排序函数,返回排序后的字符串数组
char **sort_strings(const char **strings, int n) {
char **sorted_list = (char **)malloc(n * sizeof(char *));
for (int i = 0; i < n; i++) {
sorted_list[i] = (char *)malloc(strlen(strings[i]) + 1); // 分配内存
strcpy(sorted_list[i], strings[i]);
}
qsort(sorted_list, n, sizeof(char*), cmp);
return sorted_list;
}
int main() {
const char **keys = (const char **)malloc(num_keys * sizeof(const char *));
// 假设已经给keys数组赋值
int n = num_keys;
char **sorted_keys = sort_strings(keys, n);
for (int i = 0; i < n; i++) {
printf("%s ", sorted_keys[i]);
free(sorted_keys[i]); // 释放内存
}
printf("\n");
free(sorted_keys); // 释放内存
free(keys); // 释放内存
return 0;
}
```
该函数使用了动态内存分配,将排序后的字符串列表复制到一个新的字符串数组中,并返回该字符串数组的指针。需要在程序结束前分别使用free函数释放内存。
阅读全文