Oppure

Loading
17/11/07 20:22
Fmasso91
Salve,
nel mio programmino in c ho bisogno che l'utente immetta una password, pero vorrei fare in modo che mentre l'utente scriva non appaiano i caratteri sullo schermo , un po come per il login sui sistemi unix-like.

Qualcuno sa come fare???

Grazie
Masso
aaa
17/11/07 22:12
ScorpionITA
devi crearti una funzione che tramite l'utilizzo di getch(); prenda il testo e stampi degli asterischi al posto delle lettere.
Se hai prob ti faccio un esempio
aaa
21/11/07 15:37
Fmasso91
Ho provato a usare getchar e putchar ma al massimo ottengo gli asterischi tra una lettera e l'altra.
Se puoi farmi un esempio te ne sarei molto grato.
aaa
21/11/07 15:38
Fmasso91
Ho provato a usare getchar e putchar ma al massimo ottengo gli asterischi tra una lettera e l'altra.
Se puoi farmi un esempio te ne sarei molto grato.
aaa
22/11/07 15:19
LuigiBiasi
credo chedovresti usare la putchar(8) prima di stampare il carattere *.
putchar(8);

per cancellare il carattere.
Non ho testato il programma, non so se funziona.
Ciao.
aaa
23/11/07 20:39
ScorpionITA
ciao allora ecco il codice

void GetPassMask(int nMaxLenght, char *szBuffer, char cPasswordChar) {
       char cPw;
       int i = 0;    

       do {
			/* Cattura il tasto premuto e lo memorizza in pw */
            cPw = getch();                                      
            
            /* Se il numero di caratteri è minore di zero il numero dei caratteri è zero */
            if (i < 0) i = 0;                                  
            
            /* Se i è maggiore della lunghezza massima consentita allora i = lunghezza massima */            
            if (i > (nMaxLenght)) i = nMaxLenght;                      
            
            /* Se il tasto premuto NON è INVIO... */
            if (cPw != '\r') {                                  
               
               /* Se il tasto premuto è il backspace... */    
               if (cPw == '\b') {     
				   
                   /* Se cPasswordChar è diverso da 0 cancella un'asterisco */                                         
                   if(cPasswordChar != 0) if (i > 0) putch('\b'); putch(' '); putch('\b');
                   
				   /* Decrementa i per non contare il carattere backspace */
                   i--;
               } else {                      
                   
				   /* Inserisce il carattere nel buffer e incrementa la lunghezza */                                                       
                   szBuffer[i++] = cPw;
                   if (i <= nMaxLenght) 					   
					   if(cPasswordChar != 0) putch(cPasswordChar);
               }
			}
       /* Con la pressione di INVIO finisce l'inserimento della password */            
       } while (cPw != '\r'); 
	   
       /* Inserisce il NULL nell'ultima posizione di buffer per indicare la fine della stringa */
       szBuffer[i] = 'ciao allora ecco il codice


void GetPassMask(int nMaxLenght, char *szBuffer, char cPasswordChar) {
       char cPw;
       int i = 0;    

       do {
			/* Cattura il tasto premuto e lo memorizza in pw */
            cPw = getch();                                      
            
            /* Se il numero di caratteri è minore di zero il numero dei caratteri è zero */
            if (i < 0) i = 0;                                  
            
            /* Se i è maggiore della lunghezza massima consentita allora i = lunghezza massima */            
            if (i > (nMaxLenght)) i = nMaxLenght;                      
            
            /* Se il tasto premuto NON è INVIO... */
            if (cPw != '\r') {                                  
               
               /* Se il tasto premuto è il backspace... */    
               if (cPw == '\b') {     
				   
                   /* Se cPasswordChar è diverso da 0 cancella un'asterisco */                                         
                   if(cPasswordChar != 0) if (i > 0) putch('\b'); putch(' '); putch('\b');
                   
				   /* Decrementa i per non contare il carattere backspace */
                   i--;
               } else {                      
                   
				   /* Inserisce il carattere nel buffer e incrementa la lunghezza */                                                       
                   szBuffer[i++] = cPw;
                   if (i <= nMaxLenght) 					   
					   if(cPasswordChar != 0) putch(cPasswordChar);
               }
			}
       /* Con la pressione di INVIO finisce l'inserimento della password */            
       } while (cPw != '\r'); 
	   
       /* Inserisce il NULL nell'ultima posizione di buffer per indicare la fine della stringa */
       szBuffer[i] = '{parsed_message}';
}


il codice sopra non è mio, non ricordo dove l'ho trovato comunque è facile da comprendere.
se hai dubbi chiedi pure :k:'; }


il codice sopra non è mio, non ricordo dove l'ho trovato comunque è facile da comprendere.
se hai dubbi chiedi pure :k:
Ultima modifica effettuata da ScorpionITA 23/11/07 20:41
aaa
25/11/07 7:16
Fmasso91
Tutto chiaro
Grazie 1000
aaa