下面是详细讲解“C 程序 对字符串集排序”的完整使用攻略。
概述
在 C 语言中,我们可以使用 qsort()
函数对字符串集进行排序。具体来说,我们需要填写几个参数,包括要排序的字符串数组指针、字符串数组中字符串的个数、每个字符串的长度、和一个比较函数指针。比较函数指针是用来告诉 qsort()
函数如何进行排序的,这个函数会比较两个字符串,然后返回一个负数、零、或正数,表示这两个字符串的大小关系。
使用方法
下面给出一个完整的例子,介绍如何使用 qsort()
函数对字符串集排序。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LEN 100
#define MAX_STR_NUM 5
int str_cmp(const void *a, const void *b) {
const char **pa = (const char **)a;
const char **pb = (const char **)b;
return strcmp(*pa, *pb);
}
int main() {
char strs[MAX_STR_NUM][MAX_STR_LEN] = {"apple", "banana", "cat", "dog", "elephant"};
char *p_strs[MAX_STR_NUM];
int i;
for (i = 0; i < MAX_STR_NUM; i++) {
p_strs[i] = strs[i];
}
qsort(p_strs, MAX_STR_NUM, sizeof(char *), str_cmp);
for (i = 0; i < MAX_STR_NUM; i++) {
printf("%s\n", p_strs[i]);
}
return 0;
}
在本例中,我们首先定义了一个字符串集 strs
,它包含了 5 个字符串。然后我们定义了一个指针数组 p_strs
,用来存储字符串集中每个字符串的地址。接着我们填写比较函数 str_cmp()
,它会调用 strcmp()
函数比较两个字符串。最后我们调用 qsort()
函数对字符串集进行排序,将排序结果打印出来。
示例说明
在本例中,我们假设需要对一组单词进行字典序排序。按照字典序,我们可以使用 ASCII 码进行比较。在比较函数 str_cmp()
中,我们调用了 strcmp()
函数,它可以对两个字符串进行字典序比较,并返回一个负数、零、或正数,表示这两个字符串的大小关系。按照 C 语言的约定,我们需要在主函数中调用 qsort()
函数,它会根据比较函数指针 str_cmp()
的定义来进行排序。
下面是程序输出的结果:
apple
banana
cat
dog
elephant
可以看到,程序成功地将单词按照字典序排序,并输出了排序结果。
再举一个例子,假设现在我们需要对一组字符串按照长度排序。那么我们只需要修改比较函数 str_cmp()
,让它比较两个字符串的长度即可。
int len_cmp(const void *a, const void *b) {
const char **pa = (const char **)a;
const char **pb = (const char **)b;
return strlen(*pa) - strlen(*pb);
}
接下来我们调用 qsort()
函数,将字符串按照长度排序,并输出排序结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 程序 对字符串集排序 - Python技术站