C语言编写函数对字符串排序,要求使用二维数组作为参数。
时间: 2024-11-06 08:22:14 浏览: 30
在C语言中,对字符串数组进行排序,可以使用内置的qsort函数,但是直接对二维数组进行排序可能会有些复杂,因为我们需要先处理每个元素,也就是每个字符串。这里我们可以设计一个自定义的比较函数,接受两个字符串指向的二维数组元素进行比较,然后调用qsort。
首先,定义一个用于比较字符串的辅助函数,比如`strcmp`的变体,假设叫`compare_strings`:
```c
#include <stdio.h>
#include <string.h>
int compare_strings(char (*str1)[MAX_STR_LEN], char (*str2)[MAX_STR_LEN]) {
return strcmp(str1[0], str2[0]);
}
```
接下来,定义主函数,使用qsort和提供的二维数组:
```c
#define MAX_STR_LEN 100
void sort_strings(char strings[][MAX_STR_LEN], int num_elements) {
qsort(strings, num_elements, sizeof(char[MAX_STR_LEN]), compare_strings);
}
int main() {
// 示例二维数组
char string_array[][MAX_STR_LEN] = {"banana", "apple", "cherry", "date"};
int elements = sizeof(string_array) / sizeof(string_array[0]);
sort_strings(string_array, elements);
// 输出排序后的数组
for (int i = 0; i < elements; ++i) {
printf("%s\n", string_array[i]);
}
return 0;
}
```
在这个例子中,我们假设数组中的每个字符串长度都小于等于`MAX_STR_LEN`,并且整个数组的元素个数已经预先计算好传递给`sort_strings`函数。这个函数会按照首字母顺序对字符串数组进行升序排序。
阅读全文