如何检查密码是否在C中有字母

时间:2018-01-11 08:15:07

标签: c

我写了一个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");
    }
}

1 个答案:

答案 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
}

应该允许它非常干净地弹出。