不使用ctype.h
时间: 2024-12-02 07:21:27 浏览: 8
如果你不想使用C标准库中的`ctype.h`头文件,可以手动创建一个大写字母到小写字母的映射表来进行转换。下面是一个简单的实现,不依赖于库函数:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
#define LOWER ('a')
#define UPPER ('A')
char lower_map[26] = {'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'};
char upper_map[26] = {'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'};
void toLowerCase(char str[]) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= UPPER && str[i] <= UPPER + 25) { // 判断是否为大写字母
str[i] = lower_map[str[i] - UPPER]; // 转换为对应的小写字母
}
}
}
int main() {
char input[MAX_LEN];
printf("请输入一行英文:");
fgets(input, MAX_LEN, stdin); // 读取用户输入,包括换行符
// 移除fgets读取的换行符
if (input[strlen(input) - 1] == '\n') {
input[strlen(input) - 1] = '\0'; // 修改字符串结束字符
}
toLowerCase(input);
printf("转换后的字符串:%s\n", input);
return 0;
}
阅读全文