AIUTO PROGRAMMA PASSWORD

di il
8 risposte

AIUTO PROGRAMMA PASSWORD

Salve, è la prima volta che scrivo in un forum quindi perdonatemi se ho sbagliato sezione o che altro.
Sto scrivendo un programma che simuli l'acquisizione di una password e utilizzo la funzione getch() perchè non ha l'eco
CODICE
for(i=0; (password= getch()) != '\n' && i<21; i++)
putchar('*');
ad ogni ciclo dovrei inserire un carattere fin che non inserisco \n (invio ) o non raggiungo il limite di lettere per la password che è 20 e sempre ad ogni ciclo dovrei stampare un asterisco.... Il problema sta nel fatto che quando premo invio non esce dal for, esce solo quando inserisco 20 caratteri e non capisco perchè..... Se qualcuno può spiegarmi e consigliarmi una modalità migliore volentieri
Grazie !!

8 Risposte

  • Re: AIUTO PROGRAMMA PASSWORD

    Dovresti sostituire && con || perché si aspetta che siano entrambe vere per uscire.
  • Re: AIUTO PROGRAMMA PASSWORD

    Grazie per la risposta ma avevo gia provato sia con l'AND che con l'OR ma con entrambi mi da lo stesso problema!....
  • Re: AIUTO PROGRAMMA PASSWORD

    Allora dovresti postare un pò piu di codice, in che S.O. sei? Che compilatore Usi?
  • Re: AIUTO PROGRAMMA PASSWORD

    Ok! Uso dev c++ e sono in windows 7

    funzione

    int password()
    {
    char password_iniziale[20]={"enter"} ;
    int cont=0, r=0;
    char password[21] = {'\0'};
    printf("****************** PASSWORD ************************\n\n");
    do
    {
    cont = 0;
    printf("Tentativo %d\n", r+1);
    printf("Digitare password: ");
    for(i=1; (password[i-1]= getch()) != '\n' || i<21; i++)
    putchar('*');

    fflush(stdin);
    r++;
    system("cls");
    for(i=0; password!='\0'; i++)
    if(password == password_iniziale);
    cont ++;
    if(cont == 5)
    return 1;

    }while (r<5);
    return 0;
    }
  • Re: AIUTO PROGRAMMA PASSWORD

    Due commenti veloci;

    1) Perchè password è di 20 char? ne bastano 6.
    2) fflush non andrebbe mai usato per pulire il buffer di ingresso dei dati
  • Re: AIUTO PROGRAMMA PASSWORD

    Grazie a tutti! comunque ho trovato la soluzione, getch() legge i caratteri come il corrispettivo numero di codice ascii quindi invio va indicato con 13 e non con \n
  • Re: AIUTO PROGRAMMA PASSWORD

    Semmai con \r
  • Re: AIUTO PROGRAMMA PASSWORD

    Comunque per evitare queste cose è molto meglio se usi getchar che è definito dallo standard C e portabile al 100% al contrario di getch()
Devi accedere o registrarti per scrivere nel forum
8 risposte