/Anonimizzato15368Utente anonimizzato06 ott 2014, 15:39Salve a tutti volevo sapere se c'è una soluzione a questo problema. Vorrei fare un semplice login con password in modo tale che quando la inserisci si vedano gli asterischi. Vi mostro il mio codice : #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<unistd.h> #define MAX 300 int main( void ){ char password[] = "ciao"; char pass[MAX]; char c; int i; printf("Inserisci la password: "); c = getch(); while( c != '\n'){ pass = c; i++; printf("*"); c = getch(); } return 0; } Il problema è che non riconosce quando premo invio e continua a scrivere senza sosta.
OoregonSuper FamosoIscritto danov, 2011Messaggi2191706 ott 2014, 15:52Le correzioni da fare sono 3 int i = 0; while( c != '\r') { e dopo la while pass=0;
/Anonimizzato15368Utente anonimizzato06 ott 2014, 16:11Grazie milleeeeeeee.. Mi spieghi perché '\r' anziché '\n'?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191706 ott 2014, 16:12Perché il return è \r mentre il \n è il linefeed
/Anonimizzato15368Utente anonimizzato06 ott 2014, 16:24Ti adoro <3 Ma un'ultima domanda , so che sono palloso però giuro che è l'ultima Quando inserisco la password e sbaglio un carattere il programma mi inserisce l'asterisco anche se poi in effetti salva la password giusta. Come faccio a fargli cancellare pure l'asterisco?
SSVNikoMolto attivoIscritto daset, 2014Messaggi53506 ott 2014, 16:51Senza la libreria conio.h com'è possibile realizzarlo? conio.h non è standard C.
OoregonSuper FamosoIscritto danov, 2011Messaggi2191706 ott 2014, 17:15A questo punto cambierei così int i=0; printf("Inserisci la password: "); do { c = _getch(); switch(c) { case '\b': if (i>0) { i--; printf("\b \b"); } break; case '\r': break; default: pass[i] = c; i++; printf("*"); } } while( c != '\r'); pass[i]=0;