C语言字母排序不分大小写
时间: 2024-11-19 21:16:42 浏览: 13
在C语言中,标准库提供的字符串处理函数如strcmp()在比较字符串时默认区分大小写。如果你想对字母进行排序并且忽略大小写,你需要自定义一个比较函数,通常会先将字符转换为其小写形式再进行比较。这可以通过ASCII码值来实现,大写字母的ASCII值大于相应的小写字母。
例如,可以创建一个简单的自定义比较函数:
```c
int my_strcmp(const char *str1, const char *str2) {
while(*str1 != '\0' && *str2 != '\0') {
if(tolower(*str1) < tolower(*str2)) return -1;
else if(tolower(*str1) > tolower(*str2)) return 1;
str1++;
str2++;
}
// 如果两个字符串长度相同则返回0表示相等
return *str1 == '\0' && *str2 == '\0';
}
```
然后在需要排序的地方使用这个函数:
```c
#include <stdio.h>
#include <string.h>
// 使用my_strcmp函数替换strcmp
#define strcmp my_strcmp
int main() {
char str[] = {"Hello", "world", "zoo", "aA"};
qsort(str, sizeof(str) / sizeof(str[0]), sizeof(char*), strcmp);
printf("Sorted strings (ignoring case): ");
for(int i=0; i<sizeof(str)/sizeof(str[0]); i++) {
printf("%s ", str[i]);
}
printf("\n");
return 0;
}
阅读全文