编写函数指针函数为参数对字符串排序char*name[]=zhabgsan,lisi,wangwu,zhaoliu,weiqi 1实现字符串交换 不使用stdlib,const char
时间: 2024-11-27 10:10:36 浏览: 12
python实现字符串和字典的转换
5星 · 资源好评率100%
首先,让我们明确一点,您提到的是需要编写一个函数,该函数接受一个指向字符数组的指针作为参数,并按照某种规则对这个字符串数组进行排序。由于您提到了"不使用stdlib"并且限制了排序规则(这里未给出),我们可以假设您想要实现简单的冒泡排序或者插入排序。
这是一个使用冒泡排序算法的例子,它不依赖于`std::sort`等库函数:
```c
#include <stdio.h>
#include <string.h>
// 定义比较两个字符串的函数指针类型
typedef int (*CompareFn)(const char*, const char*);
// 冒泡排序函数,接受比较函数指针作为参数
void bubbleSort(char* names[], int n, CompareFn compare) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (compare(names[j], names[j + 1]) > 0) {
// 如果前一个名字按规则应该排在后一位,则交换它们
char temp[50];
strcpy(temp, names[j]);
strcpy(names[j], names[j + 1]);
strcpy(names[j + 1], temp);
}
}
}
}
// 比较字符串长度作为默认的升序排列规则
int compareLength(const char* a, const char* b) {
return strlen(a) - strlen(b);
}
// 主程序部分
int main() {
const char* name[] = {"zhabgsan", "lisi", "wangwu", "zhaoliu", "weiqi"};
int n = sizeof(name) / sizeof(name[0]);
bubbleSort(name, n, compareLength);
// 输出排序后的字符串数组
for (int i = 0; i < n; ++i) {
printf("%s\n", name[i]);
}
return 0;
}
阅读全文