c语言 将字符串列表中的字符串按ascII从小到大排序
时间: 2023-10-03 17:09:16 浏览: 284
可以使用C语言中的qsort函数来进行排序,可以自定义比较函数来指定按照ascII码从小到大排序。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义比较函数
int cmp(const void *a, const void *b) {
return strcmp(*(char**)a, *(char**)b);
}
int main() {
char *string_list[] = {"apple", "banana", "cat", "dog"};
int n = sizeof(string_list) / sizeof(string_list[0]);
qsort(string_list, n, sizeof(char*), cmp);
for (int i = 0; i < n; i++) {
printf("%s ", string_list[i]);
}
printf("\n");
return 0;
}
```
输出:
```
apple banana cat dog
```
相关问题
C语言将字符串s中的所有字符按ASCIl值从小到大重新排序,然后再显示该字符串。将字符串s中的所有字符按ASCII值从小到大重新排序,然后再显示该字符串。
可以使用C语言的库函数qsort()来进行排序,具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *a, const void *b) {
return *(char*)a - *(char*)b;
}
int main() {
char s[100];
printf("请输入字符串:");
scanf("%s", s);
int len = strlen(s);
qsort(s, len, sizeof(char), compare);
printf("排序后的字符串为:%s\n", s);
return 0;
}
```
首先读入字符串s并获取其长度,然后使用qsort()函数将字符串s中的字符按照ASCII码从小到大进行排序,最后输出排序后的字符串。
c语言将 const char *key_names[key_count]列表中按ASCII从小到大排序 输出一个新的字符串列表指针
你可以使用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`函数,该函数接受一个字符串列表和字符串数量作为参数,返回一个按照ASCII从小到大排序后的新字符串列表指针。在`sort_strings`函数中,我们使用`memcpy`函数将原始字符串列表复制到一个新的字符串列表中,然后使用`qsort`函数对该字符串列表进行排序。最后我们在`main`函数中调用`sort_strings`函数,并打印排序后的字符串列表。
注意,由于`key_names`数组中的元素是`const char *`类型,而`qsort`函数需要的是`void *`类型,因此我们需要进行一些类型转换。具体来说,我们需要将`const char *`类型转换为`const char **`类型,这可以通过使用`sizeof(char *)`作为第三个参数来实现。同时,由于我们在`sort_strings`函数中使用了`malloc`函数分配了一块内存,因此在程序结束时需要使用`free`函数释放该内存。
阅读全文