C语言大写字母如何转小写?

99ANYc3cd6
预计阅读时长 8 分钟
位置: 首页 C语言 正文

方法1:使用标准库函数 tolower()

C标准库提供了 tolower() 函数(在 <ctype.h> 中定义),可以直接将字符转换为小写。

c语言大写字母转换成小写字母
(图片来源网络,侵删)
#include <stdio.h>
#include <ctype.h>
int main() {
    char upper = 'A';
    char lower = tolower(upper); // 转换为小写 'a'
    printf("Original: %c, Lowercase: %c\n", upper, lower);
    return 0;
}

注意tolower() 只对大写字母有效,非字母字符会原样返回。


方法2:手动转换(利用ASCII码)

在ASCII编码中:

  • 大写字母 'A' ~ 'Z' 的范围是 65 ~ 90
  • 小写字母 'a' ~ 'z' 的范围是 97 ~ 122
  • 大写字母和小写字母的差值是 32'A' - 'a' = 32)。

可以通过加上 32 来转换大写字母:

#include <stdio.h>
char to_lower(char c) {
    if (c >= 'A' && c <= 'Z') {
        return c + 32;
    }
    return c; // 非大写字母原样返回
}
int main() {
    char upper = 'Z';
    char lower = to_lower(upper); // 转换为小写 'z'
    printf("Original: %c, Lowercase: %c\n", upper, lower);
    return 0;
}

方法3:使用位运算(仅适用于ASCII)

由于大写字母和小写字母在ASCII中只有第5位(从0开始计数)不同,可以通过异或操作快速转换:

c语言大写字母转换成小写字母
(图片来源网络,侵删)
  • 大写字母转小写:c | 0x20(将第5位置为1)。
  • 小写字母转大写:c & ~0x20(将第5位置为0)。
#include <stdio.h>
char to_lower_bitwise(char c) {
    return c | 0x20; // 转换为小写
}
int main() {
    char upper = 'M';
    char lower = to_lower_bitwise(upper); // 转换为小写 'm'
    printf("Original: %c, Lowercase: %c\n", upper, lower);
    return 0;
}

方法4:处理字符串(批量转换)

如果需要转换整个字符串(例如用户输入的字符串),可以遍历字符串并逐个字符转换:

#include <stdio.h>
#include <ctype.h>
void string_to_lower(char *str) {
    for (int i = 0; str[i] != '\0'; i++) {
        str[i] = tolower(str[i]);
    }
}
int main() {
    char text[] = "Hello World!";
    string_to_lower(text);
    printf("Lowercase: %s\n", text); // 输出: "hello world!"
    return 0;
}

方法 适用场景 优点 缺点
tolower() 单个字符或字符串 简单、标准 依赖 <ctype.h>
手动转换 学习底层原理 不依赖库 需要处理非字母字符
位运算 高性能场景 极快 仅适用于ASCII
遍历字符串 批量转换 直接修改原字符串 需要额外函数

推荐优先使用 tolower(),因为它可读性强且符合标准,如果需要极致性能(如嵌入式系统),可考虑位运算方法。

c语言大写字母转换成小写字母
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede标签样式如何自定义?
« 上一篇 今天
C语言程序设计现代方法第二版适合初学者吗?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]