Я сделал простую (и некрасивую) программу для проверки пароля, который вводит пользователь для прописных, строчных букв, числа и знака доллара. проблема в том, что мой printf в начале цикла do while повторяется неловко, пока scanf даже не останавливает его, и это повторение зависит от ввода пользователя. Я добавил несколько комментариев, чтобы объяснить код, и я сделаю несколько снимков экрана, чтобы показать вам, что я имею в виду, повторяя printf.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
int main(){
char pass[10];
int i,t,x,y,z;
t=y=z=0;
do{
printf("Enter a password it needs to have an uppercase letter a lowercase one, a number and a $ sign: ");
scanf(" %c", pass);
//here i test for upper case, letter by letter
for(i=0;i<10;i++){
if(isalpha(pass[i])){
if(isupper(pass[i])){
t++;
}
}
}
//here i test for lower case, letter by letter
for(i=0;i<10;i++){
if(isalpha(pass[i])){
if(islower(pass[i])){
y++;
}
}
}
//here i test for number, letter by letter
for(i=0;i<10;i++){
if(isdigit(pass[i])){
z++;
}
}
//here i look for the dollar sign
for(i=0;i<10;i++){
if(pass[i]=='$'){
x++;
}
}
printf("\n");
//if all the tests were true the variables t,x,y and z would not be 0
}while(t==0 || x==0 || y==0 || z==0);
}
первое отображение кода работает нормально:
введите описание изображения здесь
однако, как вы увидите на этом рисунке, когда я ввожу неверный пароль, printf повторяется:
введите описание изображения здесь
и повторение printf зависит от того, сколько пользователь вводит:
введите описание изображения здесь
даже когда я ввожу надежный пароль, printf повторяется много раз, прежде чем код заканчивается:
введите описание изображения здесь
Я предполагаю, что проблема заключается в циклах for в постели в цикле do while, но я просто не могу найти, где именно проблема и почему printf так странно повторяется