Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Password
Forum - C/C++ - Password

Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 21:22
Sabato, 17/11/2007
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

PM Quote
Avatar
ScorpionITA (Member)
Newbie


Messaggi: 15
Iscritto: 28/10/2007

Segnala al moderatore
Postato alle 23:12
Sabato, 17/11/2007
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

PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 16:37
Mercoledì, 21/11/2007
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.

PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 16:38
Mercoledì, 21/11/2007
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.

PM Quote
Avatar
LuigiBiasi (Normal User)
Expert


Messaggi: 237
Iscritto: 15/09/2006

Segnala al moderatore
Postato alle 16:19
Giovedì, 22/11/2007
credo chedovresti usare la putchar(8) prima di stampare il carattere *.
Codice sorgente - presumibilmente Plain Text

  1. putchar(8);


per cancellare il carattere.
Non ho testato il programma, non so se funziona.
Ciao.

PM Quote
Avatar
ScorpionITA (Member)
Newbie


Messaggi: 15
Iscritto: 28/10/2007

Segnala al moderatore
Postato alle 21:39
Venerdì, 23/11/2007
ciao allora ecco il codice

Codice sorgente - presumibilmente C#

  1. void GetPassMask(int nMaxLenght, char *szBuffer, char cPasswordChar) {
  2.        char cPw;
  3.        int i = 0;    
  4.  
  5.        do {
  6.                         /* Cattura il tasto premuto e lo memorizza in pw */
  7.             cPw = getch();                                      
  8.            
  9.             /* Se il numero di caratteri è minore di zero il numero dei caratteri è zero */
  10.             if (i < 0) i = 0;                                  
  11.            
  12.             /* Se i è maggiore della lunghezza massima consentita allora i = lunghezza massima */            
  13.             if (i > (nMaxLenght)) i = nMaxLenght;                      
  14.            
  15.             /* Se il tasto premuto NON è INVIO... */
  16.             if (cPw != '\r') {                                  
  17.                
  18.                /* Se il tasto premuto è il backspace... */    
  19.                if (cPw == '\b') {    
  20.                                    
  21.                    /* Se cPasswordChar è diverso da 0 cancella un'asterisco */                                        
  22.                    if(cPasswordChar != 0) if (i > 0) putch('\b'); putch(' '); putch('\b');
  23.                    
  24.                                    /* Decrementa i per non contare il carattere backspace */
  25.                    i--;
  26.                } else {                      
  27.                    
  28.                                    /* Inserisce il carattere nel buffer e incrementa la lunghezza */                                                      
  29.                    szBuffer[i++] = cPw;
  30.                    if (i <= nMaxLenght)                                            
  31.                                            if(cPasswordChar != 0) putch(cPasswordChar);
  32.                }
  33.                         }
  34.        /* Con la pressione di INVIO finisce l'inserimento della password */            
  35.        } while (cPw != '\r');
  36.            
  37.        /* Inserisce il NULL nell'ultima posizione di buffer per indicare la fine della stringa */
  38.        szBuffer[i] = '\0';
  39. }



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 il 23/11/2007 alle 21:41
PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 8:16
Domenica, 25/11/2007
Tutto chiaro
Grazie 1000

PM Quote