编写函数,对字符数组中的字母由大到小的字母顺序进行排序
1. strcspn是把我们用户手动键盘输入字符的时候,因为换行符也会输入,而没有\0,会把换行符也输入进去以及没有\0会乱码,所以strcspn是找出str字符数组里面的\n的位置,然后把\n换成\0
2.在函数实现中使用到toupper函数,是把小写字母都转换成大写,这样做的目的是1.一致性 2.简化逻辑 3.可读性
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void sort_letters(char arr[], int length) {
int i, j;
char temp;
// 冒泡排序
for (i = 0; i < length - 1; i++) {
for (j = 0; j < length - i - 1; j++) {
// 如果当前字符小于下一个字符,交换它们
if (toupper(arr[j]) < toupper(arr[j + 1])) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
char str[100]; // 假设用户输入的字符串最大长度为100
int length;
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 读取用户输入的字符串
// 去除字符串末尾的换行符
str[strcspn(str, "\n")] = '\0';
length = strlen(str);
printf("原始字符串:%s\n", str);
sort_letters(str, length);
printf("排序后的字符串:%s\n", str);
return 0;
}