写一个字符串排序函数,传入参数是指针类型的
时间: 2024-09-25 11:02:46 浏览: 30
C-about-pointer.zip_函数指针
在C语言中,由于字符串本质上是由字符数组构成的,我们可以编写一个比较函数`strcmp()`来实现字符串的自然顺序排序。然后,结合指针,可以利用标准库提供的`qsort()`函数对一组字符串进行排序。这里是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 比较两个字符串字典序的函数
int compareStrings(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
// 排序字符串数组的函数
void sortStrings(char **arr, int n) {
if (arr == NULL || n <= 1)
return;
qsort(arr, n, sizeof(char*), compareStrings);
}
// 示例:如何使用这个排序函数
int main() {
char *strs[] = {"banana", "apple", "cherry", "date"};
int num_strs = sizeof(strs) / sizeof(strs[0]);
// 对字符串数组进行排序
sortStrings(strs, num_strs);
// 打印排序后的结果
for (int i = 0; i < num_strs; i++) {
printf("%s ", strs[i]);
}
printf("\n");
return 0;
}
```
在这个示例中,我们首先声明了一个比较函数`compareStrings`,它接受两个字符串的地址作为输入,并通过`strcmp`进行比较。接着,在`sortStrings`函数中,我们传递了字符串数组的指针、数组长度以及比较函数给`qsort`。
阅读全文