C语言不使用库和正则如何判断字符串同时包含大小写字母?
解决思路
- 新增两个标记变量,分别记录小写字母、大写字母的出现状态,初始值设为0(代表未出现对应类型字符)
- 遍历密码每一位字符时,除了校验字符合法性,同步更新对应类型的标记位
- 遍历完成后校验两个标记位的状态,均为1时即满足「同时包含大小写字母」的要求
代码实现
首先你可以自行实现大小写判断逻辑(无需依赖ctype.h):
// 判断是否为小写字母 int isChar_abc(char c) { return c >= 'a' && c <= 'z'; } // 判断是否为大写字母 int isChar_ABC(char c) { return c >= 'A' && c <= 'Z'; }
核心校验逻辑修改如下:
int i = 0; int has_lower = 0; // 标记是否出现过小写字母 int has_upper = 0; // 标记是否出现过大写字母 while (string[i] != '\0') { if (isChar_abc(string[i])) { has_lower = 1; i++; } else if (isChar_ABC(string[i])) { has_upper = 1; i++; } else { // 存在非大小写的非法字符 printf("Error, end code\n"); return 0; } } // 校验是否同时包含大小写 if (!(has_lower && has_upper)) { printf("密码需要同时包含大写和小写字母\n"); return 0; } // 此处可继续执行后续安全等级的校验
内容的提问来源于stack exchange,提问作者Tokugawa
相关产品推荐
相关产品推荐

