我写了一个简单的代码,它接受来自用户的密码并检查它是否包含UpperCase字母,数字和特殊字符。密码长度应该3.C编程 - 操作员
问题:
用户应该获得三项试验之前结束。如果密码正确,代码就可以很好地工作,但如果密码错误,它会持续无限地提问。我认为增加运营商增加尝试是行不通的(或者我犯了错误)。
感谢您的帮助。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i=0, letter=0, digit=0, character=0;
int attempt=0;
char password[3];
while(attempt<3)
{
printf("\nAttempt: %d\n", attempt);
printf("\nPlease enter the 3 character password containing Letter in upper case, digit & special character: \n");
scanf(" %s", password);
for(i=0; i<=2; i++)
{
if(isalpha(password[i]))
{
if(isupper(password[i]))
{
letter=1;
continue;
}
else
{
printf("Wrong Password (Upper case letter needed)\n");
break;
}
}
else if(isdigit(password[i]))
{
digit=1;
continue;
}
else
{
character=1;
}
}
if(letter==1 && digit==1 && character==1)
{
printf("You have entered correct password\n");
break;
}
else
{
printf("You have entered wrong password Try again\n");
attempt++;
}
}
return 0;
}
要长3,你需要声明'字符密码[4];'而不是'字符密码[3]; ',同样在'scanf'中使用''%3s'''以避免缓冲区溢出。 –