c语言n个字符串按字典顺序排序
时间: 2023-12-25 19:07:02 浏览: 214
要对n个字符串按照字典顺序进行排序,可以使用C标准库中的qsort函数,并编写一个自定义的比较函数。以下是一个示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100 // 最大字符串长度
#define MAX_NUM 100 // 最大字符串数量
int cmp(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main(void) {
char *strs[MAX_NUM]; // 存储指向字符串的指针
int n; // 字符串数量
// 读入字符串
printf("请输入字符串数量:");
scanf("%d", &n);
printf("请输入%d个字符串(每行一个):\n", n);
for (int i = 0; i < n; i++) {
char *str = (char *)malloc(MAX_LEN * sizeof(char)); // 分配字符串内存
scanf("%s", str);
strs[i] = str; // 记录指针
}
// 排序
qsort(strs, n, sizeof(char *), cmp);
// 输出结果
printf("按字典顺序排序后的结果为:\n");
for (int i = 0; i < n; i++) {
printf("%s\n", strs[i]);
free(strs[i]); // 释放字符串内存
}
return 0;
}
```
在上述程序中,我们定义了一个自定义的比较函数cmp,它接受两个指向字符串的指针,使用strcmp函数进行比较并返回比较结果。然后在主函数中,我们使用指针数组strs存储指向字符串的指针、读入字符串、调用qsort函数进行排序、输出结果,并在最后释放字符串内存。需要注意的是,在使用malloc函数分配字符串内存后,需要在程序结束前使用free函数释放内存,以免出现内存泄漏的问题。
阅读全文