我写了一个C程序,检查密码是否有大写,数字和字母,我想知道的是一种更有效的方法吗?因为我在每个if语句中写的代码我有5个如果OR&#39>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(void)
{
char password[7];
scanf("%s",password);
int len;
len=strlen(password);
int x=0;
if (len<6)
{
puts("password too short");
}
else if (len>6)
{
puts("password too long");
}
if (isalpha(password[0]) || isalpha(password[1]) || isalpha(password[2]) || isalpha(password[3])||isalpha(password[4]) || isalpha(password[5]));
else
{
printf("no alpha found\n");
}
if (isupper(password[0]) || isupper(password[1]) || isupper(password[2]) || isupper(password[3])||isupper(password[4]) || isupper(password[5]));
else
{
printf("no uppercase found\n");
}
if (isdigit(password[0]) || isdigit(password[1]) || isdigit(password[2]) || isdigit(password[3])||isdigit(password[4]) || isdigit(password[5]));
else
{
printf("no number found");
}
}
答案 0 :(得分:2)
的内容
int has_upper = 0;
int has_digit = 0;
for (const char* s = password; *s; ++s){
has_upper |= isupper(s);
has_digit |= isdigit(s);
// etc
}
应该允许它非常干净地弹出。