Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Generazione casuale di una stringa con caratteri maiuscoli, minuscoli, ecc.

    ciao a tutti, volevo chiedervi se esiste un modo per generare in maniera automatica una stringa con, per esempio con una serie di caratteri maiuscoli, minuscoli e numeri.
    per esempio questo codice è valido?
    codice:
    lettere[i] = a, b, c, d, f,...A, B, C, D, F...,@,#....[random () % 62]
    dove 62 e la somma dell'alfabeto in maiuscolo piu l'alfabeto in minuscolo piu 8 caratteri?

  2. #2

    piccolo problema in c

    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);
    
    
    
    
    }

  3. #3
    Ciao, se posso darti un consiglio difficilmente qualcuno scaricherà l'intero codice per debuggartelo. Dovresti postare quelle tre o quattro righe in cui secondo te sta il problema.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Ciao, se posso darti un consiglio difficilmente qualcuno scaricherà l'intero codice per debuggartelo. Dovresti postare quelle tre o quattro righe in cui secondo te sta il problema.
    Quoto il suggerimento, e unisco la discussione a quella precedentemente aperta, visto che il problema è strettamente correlato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    quale?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ne stai parlando in

    https://www.iprogrammatori.it/forum-...ma-t38802.html

    hai anche postato su

    masterdrive.it


    ... facendo questa confusione nessuno ti segue più e non hai molte risposte ....
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.