编写函数指针数组为参数对字符串排序char*name[]=zhabgsan,lisi,wangwu,zhaoliu,weiqi 1实现字符串交换 不使用stdlib
时间: 2024-11-27 22:10:59 浏览: 20
在C语言中,我们可以创建一个函数指针数组,并利用这个数组来进行字符串排序。这里我们假设有一个简单的字符串比较函数`strcmp`,用于判断两个字符串的大小。为了实现字符串交换而不使用`stdlib`库,我们需要自定义一个字符串交换的函数,例如`swapStrings`。下面是一个示例:
```c
#include <stdio.h>
#include <string.h>
// 自定义字符串交换函数,不使用stdlib
void swapStrings(char** str1, char** str2) {
char temp[strlen(*str1) + 1];
strcpy(temp, *str1);
strcpy(*str1, *str2);
strcpy(*str2, temp);
}
// 比较字符串并根据ASCII值升序排列
int compare(const void* a, const void* b) {
return strcmp(*(char**)a, *(char**)b);
}
// 排序函数指针数组
void sortStringArray(char* name[], int n) {
qsort(name, n, sizeof(char*), compare);
}
int main() {
char* name[] = {"zhabgsan", "lisi", "wangwu", "zhaoliu", "weiqi"};
int numElements = sizeof(name) / sizeof(name[0]);
// 打印原始数组
printf("Original array:\n");
for (int i = 0; i < numElements; i++) {
printf("%s\n", name[i]);
}
// 排序数组
sortStringArray(name, numElements);
// 输出排序后的数组
printf("\nSorted array:\n");
for (int i = 0; i < numElements; i++) {
printf("%s\n", name[i]);
}
return 0;
}
```
在这个例子中,`sortStringArray`函数接受一个函数指针数组作为参数,并使用`qsort`函数对其进行排序。`compare`函数充当比较器,使得字符串按字典顺序排序。
阅读全文