不许用toupper()和tolower()函数,只能用ASCII码转换,再写一个
时间: 2024-12-19 07:15:55 浏览: 4
在C语言中,如果你想只使用ASCII码进行大小写字母的转换,可以利用ASCII码表,其中大写字母A-Z对应数值范围65到90,小写字母a-z对应71到104。你可以创建两个变量分别存储大写和小写的ASCII值阈值,然后根据输入字符的ASCII值进行判断并转换。以下是一个简单的示例:
```c
#include <stdio.h>
#define ASCII_UPPER_BOUND 90
#define ASCII_LOWER_BOUND 71
char to_upper_or_lower(char c) {
if (c >= 'a' && c <= 'z') { // 小写字母
return c - ('a' - ASCII_LOWER_BOUND); // 增加ASCIILOWER_BOUND的差值
} else if (c >= 'A' && c <= 'Z') { // 大写字母
return c + ('A' - ASCII_UPPER_BOUND); // 减去ASCII_UPPER_BOUND的差值
} else {
return c; // 非字母字符保持不变
}
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
for (int i = 0; input[i] != '\0'; i++) {
input[i] = to_upper_or_lower(input[i]);
}
printf("转换后的字符串: %s\n", input);
return 0;
}
```
在这个程序中,我们首先定义了大写和小写字母的ASCII边界,然后使用`to_upper_or_lower`函数根据字符的ASCII值进行相应调整。
阅读全文