如何验证密码在C中至少有一个大写,小写和数字?

如何验证密码在C中至少有一个大写,小写和数字?,第1张

概述我该怎么做才能使它保持循环,直到它至少有一个大写,小写和数字? 我卡住了,真的卡住了…… char password[100][15];i=1; printf("Password [3..10]: "); gets(password[i]); while (strlen(password[i])>10 || strlen(password[i])<3 | 我该怎么做才能使它保持循环,直到它至少有一个大写,小写和数字?

我卡住了,真的卡住了……

char password[100][15];i=1;     printf("Password [3..10]: ");        gets(password[i]);        while (strlen(password[i])>10 || strlen(password[i])<3 || ) {           do{        printf("  Password must contain at least 1 uppercase,1 lowercase,and 1 number\nPassword [3..10]: ");        gets(password[i]);        } while (strlen(password[i])>10 || strlen(password[i])<3 );
解决方法 这应该工作:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>int is_legal(char *p) {  int number = 0,lower = 0,upper = 0,length = 0;  for( ; *p; p++) {      number += isdigit(*p);         lower  += islower(*p);           upper  += isupper(*p);      length++;  }  return number > 0 && lower > 0 && upper > 0  && length > 3 && length < 10;}char *my_gets(char *buf,int bufsize,file *file) {    if(fgets(buf,bufsize,file) == 0) {        return 0;    }    int n = strlen(buf);    if(buf[n-1] == '\n') buf[n-1] = 0;    return buf;}int get_password(char *buf,file *file) {    printf("Password [3..10]: ");    if(my_gets(buf,file) == 0) {        return -1;    }    while(is_legal(buf) == 0) {       printf("  Password must contain at least 1 uppercase,and 1    umber\nPassword [3..10]: ");       if(my_gets(buf,file) == 0) {           return -1;       }    }    return 0;}int main(voID) {    char password[100][15];    int i = 0;    if(get_password(password[i],sizeof(password[i]),stdin) != 0) {        fprintf(stderr,"Error getting password\n");        exit(1);   }   return 0;}
总结

以上是内存溢出为你收集整理的如何验证密码在C中至少有一个大写,小写和数字?全部内容,希望文章能够帮你解决如何验证密码在C中至少有一个大写,小写和数字?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存