I am trying to validate a password in C, and one of my else
statements is firing automatically whenever the code runs. I run a test to see if a character is a symbol, and if it is add 1 to int symbol
using symbol++;
, but the problem is that this code is executing regardless of whether the character I am testing is a symbol.
I think this issue has something to do with the structure of my if, else
statements, and I have tried several combinations, but something is wrong that is throwing the program off I've used else if
but that didn't help. This seems like it should be really obvious, but I can't seem to figure out what's wrong.
char password[30];
int lower, upper, number, symbol, i;
lower = upper = number = symbol = 0;
printf("Enter your password: ");
scanf("%s", &password);
int len = strlen(password);
for (i = 0; i <= len; i++) {
if (isalpha(password[i])){
if (isupper(password[i])){
upper++;
}
else{
lower++;
}
}
if (isdigit(password[i])){
number++;
}
else{
symbol++;
}
}
if (upper >= 1 && lower >= 1 && number >= 1 && symbol >= 1 && len >=6){
printf("Your password is good!");
}
if (upper < 1){
printf("You need an uppercase letter \n");
}
if (lower < 1){
printf("You need a lowercase letter \n");
}
if (number < 1){
printf("You need a number \n");
}
if (symbol < 1){
printf("You need a symbol \n");
}
if (len < 6){
printf("Your password must be at least 6 characters \n");
}