c语言将 const char *key_names[key_count]列表中按ASCII从小到大排序 输出(return 不是打印出来)一个新的字符串列表指针
时间: 2024-02-20 12:01:03 浏览: 101
你可以使用C标准库中的qsort函数来对字符串列表进行排序,然后再将排序后的字符串列表复制到一个新的字符串列表中并返回该指针。具体实现可以参考下面的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *key_names[] = {"apple", "banana", "orange", "grape"};
const int key_count = 4;
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
char **sort_strings(const char **strings, int count) {
char **sorted = (char **)malloc(count * sizeof(char *));
memcpy(sorted, strings, count * sizeof(char *));
qsort(sorted, count, sizeof(char *), compare);
return sorted;
}
int main() {
char **sorted_names = sort_strings(key_names, key_count);
for (int i = 0; i < key_count; i++) {
printf("%s\n", sorted_names[i]);
}
free(sorted_names);
return 0;
}
```
在上面的代码中,我们定义了一个`compare`函数和一个`sort_strings`函数,这两个函数的实现与上一个问题是相同的。在`sort_strings`函数中,我们使用`malloc`函数分配了一块内存,然后使用`memcpy`函数将原始字符串列表复制到该内存中,接着使用`qsort`函数对该字符串列表进行排序。最后我们返回排序后的字符串列表指针。
在`main`函数中,我们调用`sort_strings`函数并打印排序后的字符串列表,然后使用`free`函数释放该字符串列表所占用的内存。
阅读全文