Come terminare un ciclo quando premo invio

di Anonimizzato13128 il
6 risposte
Salve a tutti sto creando un semplice login che chiede nome e password e verifica che siano corretti.
Quando digito la password le lettere vengono sostituite dagli asterischi.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
  int i;
  char user[21]="esempio";
  char pass[21]="esempio";
  char nome[21];
  char password[21];
  printf("   LOGIN\n\n\n");
  printf("   Username: ");
  gets(nome);
  printf("   Password: ");
  for(i=0;i<20;i++){
    password[i]=getch();
    fflush(stdin);
    printf("*");
  }
  system("cls");
  if(strcmp(user,nome)==0&&strcmp(password,pass)==0)
    printf("Nome utente e password corretti\n");
  if(strcmp(user,nome)!=0||strcmp(password,pass)!=0)
    printf("Nome utente o password errati\n");
  fflush(stdin);
  getch();
  return 0;
}
però siccome prende un carattere alla volta e ho fatto un ciclo for, quando premo invio continua a chiedermi i caratteri. Volevo sapere come fare in modo che una volta premuto invio il ciclo terminasse?
Grazie a tutti in anticipo

6 Risposte

  • L'istruzione "break" termina un ciclo
  • Al posto del secondo if() potresti mettere un else
  • Ok grazie ma io devo terminare il ciclo quando premo invio e non so come fare
  • Se il tasto premuto == '\n' allora break.
  • Seppia ha scritto:


    ok grazie ma io devo terminare il ciclo quando premo invio e non so come fare
    il tasto invio è associato al codice ascii 13, quindi:
    
    i=0;
    while((c=getch())!=13){
        printf("*");
        password[i]=c;
        i++;
    }
    password[i]='\0';
    
  • Ok grazie mille ho provato e funziona
Devi accedere o registrarti per scrivere nel forum
6 risposte