qsort对字符数组排序
时间: 2024-01-13 20:17:20 浏览: 74
qsort可以对字符数组进行排序。下面是一个示例代码,演示如何使用qsort对字符数组进行升序排序:
```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 *arr[] = {"apple", "banana", "orange", "pear"};
int len = sizeof(arr) / sizeof(char *);
qsort(arr, len, sizeof(char *), cmp);
for (int i = 0; i < len; i++) {
printf("%s ", arr[i]);
}
return 0;
}
```
输出结果为:apple banana orange pear
相关问题
qsort排序字符串数组
qsort是一个C语言标准库中的函数,它用于对数组进行排序。在排序字符串数组时,可以使用qsort来实现按照字典顺序对字符串进行排序。首先需要自定义一个比较函数,来告诉qsort如何比较字符串的大小。比较函数需要接受两个const void*类型的参数,表示数组中的两个元素。然后在比较函数中将这两个参数转换为字符串指针,通过strcmp函数来比较它们的大小。最后将比较函数作为参数传递给qsort函数,同时还需要指定数组的起始地址、数组的长度以及每个元素的大小。调用qsort函数后,数组中的字符串将按照字典顺序进行排序。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
int main() {
char* strings[] = {"apple", "orange", "banana", "grape"};
int length = sizeof(strings) / sizeof(strings[0]);
qsort(strings, length, sizeof(char*), compare);
for (int i = 0; i < length; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
```
以上代码中,compare函数用于比较两个字符串的大小,然后在main函数中调用qsort函数对字符串数组进行排序。排序完成后,会按照字典顺序输出排序好的字符串数组。
qsort可否比较字符数组
qsort函数是C语言标准库中的一个排序函数,可以用于对数组进行排序。它可以比较字符数组,但需要使用适当的比较函数来指定比较规则。
在使用qsort函数时,需要提供一个比较函数作为参数,该函数用于定义元素之间的比较规则。对于字符数组的比较,可以使用strcmp函数来实现。strcmp函数会按照字典序比较两个字符串,并返回一个整数值表示它们的大小关系。
下面是一个示例代码,演示了如何使用qsort函数对字符数组进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 比较函数
int compare(const void* a, const void* b) {
const char* str1 = *(const char**)a;
const char* str2 = *(const char**)b;
return strcmp(str1, str2);
}
int main() {
char* arr[] = {"apple", "banana", "orange", "grape"};
int size = sizeof(arr) / sizeof(arr[0]);
// 使用qsort函数进行排序
qsort(arr, size, sizeof(char*), compare);
// 打印排序结果
for (int i = 0; i < size; i++) {
printf("%s ", arr[i]);
}
printf("\n");
return 0;
}
```
运行以上代码,输出结果为:apple banana grape orange
阅读全文