C语言编写一个能对string类字符串数组从小到大进行排序的程序,先完成对排序函数的定义
时间: 2024-09-25 07:09:49 浏览: 74
在C语言中,你可以使用标准库函数`qsort()`结合结构体数组的方式对字符串数组进行排序。这里首先需要定义一个结构体,包含一个指向字符串的指针和一个整数用于比较。然后,定义一个自定义的比较函数`strcmp_sort()`来实现字符串的升序排列。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体,包含字符串和其长度
typedef struct {
char* str;
int len;
} StringItem;
// 自定义字符串比较函数,用于排序
int strcmp_sort(const void *a, const void *b) {
StringItem itemA = *(StringItem*)a;
StringItem itemB = *(StringItem*)b;
// 使用strcmp()比较字符串,忽略长度
return strcmp(itemA.str, itemB.str);
}
void sort_strings(StringItem arr[], int n) {
qsort(arr, n, sizeof(StringItem), strcmp_sort); // 调用qsort并传递比较函数
}
int main() {
StringItem str_array[] = {{"cat", 3}, {"dog", 3}, {"apple", 5}};
int array_size = sizeof(str_array) / sizeof(str_array[0]);
printf("Before sorting:\n");
for (int i = 0; i < array_size; i++) {
printf("%s - %d\n", str_array[i].str, str_array[i].len);
}
sort_strings(str_array, array_size);
printf("\nAfter sorting:\n");
for (int i = 0; i < array_size; i++) {
printf("%s - %d\n", str_array[i].str, str_array[i].len);
}
return 0;
}
```
运行这个程序,它将按照字典顺序对输入的字符串数组进行排序。
阅读全文