目录
在C语言中实现大小写字母的转化有多种方法。下面介绍几种常见的方法,每种方法都有详细的注释。
1、使用位运算:
#include <stdio.h>
void toggleCase(char *str) {
while (*str != '\0') {
*str = *str ^ 32; // 利用ASCII码差异进行异或运算实现大小写切换
str++;
}
}
int main() {
char input[] = "Hello, World!";
printf("原始字符串: %s\n", input);
toggleCase(input);
printf("转化后字符串: %s\n", input);
return 0;
}
2、使用标准库函数:
#include <stdio.h>
#include <ctype.h>
void toggleCase(char *str) {
while (*str != '\0') {
*str = isupper(*str) ? tolower(*str) : toupper(*str); // 使用标准库函数tolower和toupper
str++;
}
}
int main() {
char input[] = "Hello, World!";
printf("原始字符串: %s\n", input);
toggleCase(input);
printf("转化后字符串: %s\n", input);
return 0;
}
3、使用ASCII码范围判断:
#include <stdio.h>
void toggleCase(char *str) {
while (*str != '\0') {
if (*str >= 'a' && *str <= 'z') {
*str = *str - 32; // 小写转大写
} else if (*str >= 'A' && *str <= 'Z') {
*str = *str + 32; // 大写转小写
}
str++;
}
}
int main() {
char input[] = "Hello, World!";
printf("原始字符串: %s\n", input);
toggleCase(input);
printf("转化后字符串: %s\n", input);
return 0;
}
以上方法都是在原始字符串上直接进行修改,如果需要保留原始字符串,可以先创建一个副本再进行修改。
4、使用条件运算符:
#include <stdio.h>
void toggleCase(char *str) {
while (*str != '\0') {
*str = (*str >= 'a' && *str <= 'z') ? *str - 32 : (*str >= 'A' && *str <= 'Z') ? *str + 32 : *str;
str++;
}
}
int main() {
char input[] = "Hello, World!";
printf("原始字符串: %s\n", input);
toggleCase(input);
printf("转化后字符串: %s\n", input);
return 0;
}
5、使用数组存储字母映射:
#include <stdio.h>
void toggleCase(char *str) {
char mapping[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
while (*str != '\0') {
for (int i = 0; i < 26; ++i) {
if (*str == mapping[i]) {
*str = (i < 13) ? mapping[i] - 32 : mapping[i] + 32;
break;
}
}
str++;
}
}
int main() {
char input[] = "Hello, World!";
printf("原始字符串: %s\n", input);
toggleCase(input);
printf("转化后字符串: %s\n", input);
return 0;
}
这些是一些常见的C语言实现大小写字母转化的方法,每种方法都有其适用的场景。希望对你有帮助。