输入三个字符串,按由小到大的顺序输出,c语言指针法
时间: 2024-12-18 14:36:48 浏览: 21
要使用C语言的指针来对三个字符串进行排序并按照字典序(即字符ASCII值从小到大)输出,我们可以采用冒泡排序算法,并利用指针指向字符串的首地址来进行比较。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 指针大小为1的辅助函数,用于比较两个字符
int compare_chars(char* str1, char* str2) {
return *str1 - *str2;
}
void sort_strings(char** arr, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (compare_chars(arr[j], arr[j + 1]) > 0) {
// 交换字符串
char temp[50]; // 假设所有字符串长度不超过49个字符
strncpy(temp, arr[j], sizeof(temp)); // 不包括终止符'\0'
arr[j][strlen(temp)] = '\0'; // 删除旧的'\0'
strncpy(arr[j + 1], arr[j], sizeof(temp));
arr[j + 1][strlen(temp)] = '\0';
strncpy(arr[j], temp, sizeof(temp));
arr[j][strlen(temp)] = '\0';
}
}
}
}
int main() {
char str1[] = "hello";
char str2[] = "world";
char str3[] = "abc";
char* arr[] = {str1, str2, str3};
printf("Original strings:\n");
for (char** p : arr) {
printf("%s ", p);
}
sort_strings(arr, 3);
printf("\nSorted strings:\n");
for (char** p : arr) {
printf("%s ", p);
}
return 0;
}
```
在这个例子中,我们定义了一个`sort_strings`函数,它接受一个字符串数组和数组的大小。内部的两个嵌套循环实现了冒泡排序算法。`compare_chars`函数用于比较字符串中的字符。
在`main`函数中,我们创建了包含三个字符串的指针数组,并调用`sort_strings`对其进行排序。最后,我们打印排序后的结果。
阅读全文