编写函数指针函数为参数对字符串排序char*name[]=zhabgsan,lisi,wangwu,zhaoliu,weiqi 1实现字符串交换
时间: 2024-11-27 14:10:42 浏览: 20
在C语言中,要编写一个函数指针作为参数来实现字符串数组的排序,首先我们需要定义一个比较函数,通常这个函数会接收两个字符串并返回一个整数表示它们的大小关系。然后我们可以通过`qsort`函数,它接受一个指向数据数组的指针、数组元素个数、每个元素的大小以及用于比较的函数指针来进行排序。
假设我们要基于字母顺序升序排列,这里是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义比较函数,接收两个字符串指针,返回int值
int compare_strings(const char *str1, const char *str2) {
return strcmp(str1, str2);
}
void swap(char **strings, int index1, int index2) {
char temp[50];
strcpy(temp, strings[index1]);
strcpy(strings[index1], strings[index2]);
strcpy(strings[index2], temp);
}
// 主函数,传递字符串数组和比较函数指针给qsort
void sort_strings_by_function(char *name[], int count, int (*compare)(const void *, const void *)) {
qsort(name, count, sizeof(char*), compare);
}
int main() {
char *name[] = {"zhabgsan", "lisi", "wangwu", "zhaoliu", "weiqi"};
int array_size = sizeof(name) / sizeof(name[0]);
// 首先打印原始数组
printf("Original Array:\n");
for (int i = 0; i < array_size; i++) {
printf("%s ", name[i]);
}
printf("\n");
// 排序字符串数组
sort_strings_by_function(name, array_size, compare_strings);
// 打印排序后的数组
printf("Sorted Array:\n");
for (int i = 0; i < array_size; i++) {
printf("%s ", name[i]);
}
printf("\n");
return 0;
}
```
运行这段程序,你会得到按照字母顺序升序排列的字符串数组。如果需要交换两个特定位置的字符串,可以使用`swap`函数。
阅读全文