在 C 语言开发中,字符串处理是最常见、也是最基本的操作之一。今天我们将实现一个实用的小功能:将字符串中的所有小写字母转换为对应的大写字母,并通过多个测试用例验证函数的正确性。
本文适用于正在使用 VC++6.0 环境进行 C 语言学习的朋友,同时也适用于希望打牢字符串基础的初学者。
🧠目标
- 编写一个 C 语言函数
to_uppercase(),将输入字符串中所有的小写字母转换为大写。 - 在主函数
main()中对该函数进行多组测试。 - 提供完整可运行源码,确保兼容 VC++6.0 环境。
📌基础原理:ASCII 值的秘密
在 C 语言中,字符是基于 ASCII 码的。在 ASCII 表中:
-
'a'到'z'的范围是:97 到 122 -
'A'到'Z'的范围是:65 到 90 - 小写和大写字母之间的固定差值是 32
所以,如果一个字符 ch 是小写字母,只需执行:
ch = ch - ('a' - 'A'); // 即 ch = ch - 32;
就可以完成小写转大写的操作。
🔧代码实现
下面是完整的 C 语言代码,包含函数实现与多个测试用例:
#include <stdio.h>
// 函数声明
void to_uppercase(char *str);
// 主函数
int main() {
char test1[] = "hello world";
char test2[] = "HeLLo123";
char test3[] = "ALLCAPS";
char test4[] = "test!@#";
char test5[] = "";
// 测试用例 1
to_uppercase(test1);
printf("Test 1: %s\n", test1); // 预期输出: HELLO WORLD
// 测试用例 2
to_uppercase(test2);
printf("Test 2: %s\n", test2); // 预期输出: HELLO123
// 测试用例 3
to_uppercase(test3);
printf("Test 3: %s\n", test3); // 预期输出: ALLCAPS
// 测试用例 4
to_uppercase(test4);
printf("Test 4: %s\n", test4); // 预期输出: TEST!@#
// 测试用例 5
to_uppercase(test5);
printf("Test 5: \"%s\"\n", test5); // 预期输出: ""
return 0;
}
// 函数定义:小写转大写
void to_uppercase(char *str) {
int i = 0;
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - ('a' - 'A');
}
i++;
}
}
🧪测试结果(运行截图)
程序运行后输出如下结果:
Test 1: HELLO WORLD
Test 2: HELLO123
Test 3: ALLCAPS
Test 4: TEST!@#
Test 5: ""
从测试结果可以看出,该函数成功地将字符串中的小写字母转换成了大写字母,保留了数字、符号和大写字符。
⚠️关于 gets() 函数的小提示
在最初的演示中,我们使用了 gets() 函数进行字符串输入,这在 VC++6.0 是被广泛使用的方式。但需要注意的是,**gets()**** 是不安全的**,因为它不会检查数组边界,容易导致缓冲区溢出。在现代 C 语言开发中,推荐使用:
fgets(str, sizeof(str), stdin);
不过考虑到 VC++6.0 环境和入门学习,这里使用 gets() 是可以接受的,只要在实际开发中注意规避即可。
✅总结
本文实现了一个简单但常用的 C 语言字符串处理函数,通过 ASCII 值操作 将小写字母转换为大写,代码简洁、逻辑清晰。在实际编程中,这类字符处理技巧非常重要,尤其在数据清洗、格式转换、输入校验等场景中经常用到。
📌延伸练习(思考题)
想进一步提高?你可以尝试以下变种或升级版:
- 写一个函数,将大写字母转换为小写。
- 写一个函数,统计字符串中小写字母的个数。
- 写一个函数,把字符串中的所有英文字母反转大小写(a→A,A→a)。
- 编写版本支持 Unicode 编码(宽字符
wchar_t)的大小写转换。
感谢阅读!如果你觉得这篇文章对你有帮助,欢迎点赞、收藏或分享给你的 C 语言小伙伴~ 🙌










网友评论