ciao a tutti...mi sono bloccato in una cosa
sto "cercando di creare un programma che dato un numero di utenti mi deve generare le generalità ad ogni utente, attraverso un menu devo scegliere se la password dovra essere impostata manualmente o automatica(utilizzando 3 diversi criteri)
il problema sta che selezionando l'opzione 1, la password deve contenere almeno 6 caratteri numerici e speciali, ma putroppo mi stampa senza ciclare fino quando la if è vera...questo e il codice:

codice:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"


#include "string.h"
#include "ctype.h"






#define UTENTI 1
#define LUNGHEZZA_CARETTERI 25
#define LUNGHEZZA_INDIRIZZO 45
#define LUNGHEZZA_EMAIL 75
#define LUNGHEZZA_DOMINI 7










typedef struct {
	int giorno;
	int mese;
	int anno;
}data;


typedef struct {
	char nome[LUNGHEZZA_CARETTERI+1];
	char cognome[LUNGHEZZA_CARETTERI+1];
	data datanascita;
	char password[8];
	char passwordtemp[8];
}utenti;






//funzioni
void generaAnagrafica(utenti account[]);
void generaPassword_automatica_livello1(utenti account[]);
void generaPassword_automatica_livello2(utenti account[]);
void generaPassword_automatica_livello3(utenti account[]);
void stampaDatiCompleti(utenti accounts[]);




int main(){
	setvbuf(stdout, NULL, _IONBF, 0);


	utenti anagrafica[UTENTI];
	for (int i=0; i<UTENTI; i++){
		generaAnagrafica(anagrafica);
		printf("\n%d° ACCOUNT: \n", i + 1);
		printf(" COGNOME: %s\n", anagrafica[i].cognome);
			printf(" NOME: %s\n", anagrafica[i].nome);


			printf("DATA DI NASCITA: ");
					 if(anagrafica[i].datanascita.giorno < 10){
						 printf("\t0%d\\", anagrafica[i].datanascita.giorno);
						}else
						{
							printf("\t%d\\", anagrafica[i].datanascita.giorno);
						}
					 if(anagrafica[i].datanascita.mese < 10){
					 			 printf("0%d\\", anagrafica[i].datanascita.mese);
					 			}else
					 			{
					 				printf("%d\\", anagrafica[i].datanascita.mese < 10);
					 			}
			printf("%d\n", anagrafica[i].datanascita.anno);


			char scelta[2];
			char sceltaSicurezza[2];
			do{
						printf("1) Generare la password in automatico\n");
						printf("2) Inserire la password manualmente\n");
						printf("Effettui una scelta (1 o 2): ");
						puts("\n*****************************************");
						scanf("%s", scelta);
					}while(strcmp(scelta,"1") && strcmp(scelta,"2"));
			if (strcmp(scelta,"1") == 0) {	//inserimento automatico
				do{
					printf("\nSelezionare il livello di complessita'\n");
					printf("1) Poco sicura\n");
					printf("2) Mediamente sicura\n");
					printf("3) Sicura\n");
					printf("Effettui una scelta: ");
					scanf("%s", sceltaSicurezza);
				}while(strcmp(sceltaSicurezza,"1") && strcmp(sceltaSicurezza,"2") && strcmp(sceltaSicurezza,"3"));


				printf("Password generata: ");


				if(strcmp(sceltaSicurezza,"1") == 0){


					generaPassword_automatica_livello1(anagrafica);






				} else if(strcmp(sceltaSicurezza,"2") == 0){


				//	 generaPassword_automatica_livello2(anagrafica);


				}else if (strcmp(sceltaSicurezza,"3") == 0){


				//	 generaPassword_automatica_livello3(anagrafica);


				}
			} else if (strcmp(scelta,"2") == 0) {	//inserimento a mano
				printf("passwird generata manualmente");
					}




			//generaPassword_automatica_livello1(anagrafica);


				for (int j=0; j<8; j++){
			printf("%c", anagrafica[i].password[j]);




			}




	}




	 // stampaDatiCompleti(anagrafica);
	return 0;
}


void generaAnagrafica(utenti account[]){




int seed = (time(NULL));
	srand(seed);
	// randomizzo nomi, cognomi, indirizzo e email
	char* nomi [] = {"ALESSANDRO", "GIACOMO", "ALESSIO", "ANTONIO", "CARLO", "FABIO", "ALESSANDRA", "GIACOMA", "ALESSIA", "ANTONIA", "CARLA", "FABIA"};
	char* cognomi [] = {"ROSSI", "BIANCHI", "NEGRO", "RIZZI", "CAMPESE", "IODICE", "ROSSIA", "BIANCHIA", "NEGROA", "RIZZIA", "CAMPESEA", "IODICEA"};
	 char* email[] = {"@gmail.com", "@gmail.it", "@hotmail.it", "@hotmail.it", "@aruba.it", "@aruba.com", "@libero.it"};


int i;
	for ( i=0; i<UTENTI; i++){
	// RANDOM NOMI
	int indice_nomi = 0;
	indice_nomi = rand () % UTENTI;
	strcpy(account[i].nome, nomi[indice_nomi]);


	//RANDOM COGNOMI
	int indice_cognomi = 0;
	indice_cognomi = rand () % UTENTI;
	strcpy(account[i].cognome, cognomi[indice_cognomi]);


	account[i].datanascita.anno = rand () % (2019 - 1950) + 1950;
			account[i].datanascita.mese = rand () % (12 - 01) + 01;
				if(account[i].datanascita.mese < 10){


				}


			if (account[i].datanascita.mese==2 && account[i].datanascita.anno%400==0 ||  (account[i].datanascita.anno%4==0 &&!(account[i].datanascita.anno%100==0))){
			account[i].datanascita.giorno = rand () % (29 - 01) + 01;
		}
			else if (account[i].datanascita.mese==2){
				account[i].datanascita.giorno = rand () % (28 - 01) + 01;
			}
			else if (account[i].datanascita.mese==1 || account[i].datanascita.mese==3 || account[i].datanascita.mese==5 || account[i].datanascita.mese==7 || account[i].datanascita.mese==8 || account[i].datanascita.mese==10){
				account[i].datanascita.giorno = rand () % (31 - 01) + 01;
			}
			else {
				account[i].datanascita.giorno = rand () % (30 - 01) + 01;
			}
			int  passwordrequisiti = 0;








	}
}


	void generaPassword_automatica_livello1(utenti account[]){




int  passwordrequisiti;






	int i,j;
	setvbuf(stdout, NULL, _IONBF, 0);






	do {




	for(i=0; i< 2; i++){


		for(j=0; j< 8; j++){


	  		passwordrequisiti = 0;


			do{
		 		account[i].passwordtemp[j] = '!' + rand() % 'z';
		  		if ((account[i].passwordtemp[j] >='!' && account[i].passwordtemp[j]< '&')
				||(account[i].passwordtemp[j] >='?' && account[i].passwordtemp[j]< '@')
				||(account[i].passwordtemp[j] >='0' && account[i].passwordtemp[j]< '9')
				||(account[i].passwordtemp[j] >='a' && account[i].passwordtemp[j]< 'z')
				||(account[i].passwordtemp[j] >='A' && account[i].passwordtemp[j]< 'Z'))
				passwordrequisiti++;
			} while(passwordrequisiti==0);
	//	printf("%c", account[i].passwordtemp[j]);
		} //printf("\n");
	}


	//printf("\n\n");


int caratteri_numerici = 0;
int caratteri_speciali = 0;
int somma_caratteri_numerici_speciali = 0;


	for(i=0; i< 2; i++){
		for(j=0; j< 8; j++){


			if (isdigit(account[i].passwordtemp[j])) {
				caratteri_numerici++;
				somma_caratteri_numerici_speciali++;
			} else if (ispunct(account[i].passwordtemp[j])) {
				caratteri_speciali++;
				somma_caratteri_numerici_speciali++;
				}
			}}


	if (somma_caratteri_numerici_speciali > 5) {


		passwordrequisiti++;


		printf("Rispettano i requisiti :\n");
		for(i=0; i< 2; i++){
			for(j=0; j< 8; j++){
			account[i].password[j] = account[i].passwordtemp[j];
				//printf("%c", account[i].password[j]);


			}
		printf("\n");
		}
	}


	} while(passwordrequisiti==1);




}