我卡住了,真的卡住了……
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中至少有一个大写,小写和数字?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)