/* File: passwor1.c */
/* Scopo: utilizzo di vettori e stringhe */

/* Riconosce una password (stringa) in un insieme predefinito di password note
   di lunghezza variabile.
*/

#include <stdio.h>

#define max_pasw 5
#define lung_pasw 9

void fine(void);


int main(void)
{
  char psw_note[max_pasw][lung_pasw] = {"prima\0",
                                        "seconda\0",
                                        "terza\0",
                                        "quarta\0",
                                        "quinta\0"};
  char password[lung_pasw];
  char ch;
  int i, j;
  int accesso = 0;      /* booleana che specifica se l'accesso e` consentito;
                           inizialmente NON lo e` */

  printf("\n\tQUESTO E' UN SISTEMA AD\n\tACCESSO CONTROLLATO\n\n");

  printf("Inserire login: [al piu` %d caratteri]: ", lung_pasw-1);

  ch = getchar();
  for (i = 0; (i < lung_pasw-1) && (ch != '\n'); i++) {
    password[i] = ch;
    ch = getchar();
  }
  password[i] = '\0';                       /* sovrascrive l'eventuale "\n' */

  if (ch != '\n') {
    scanf("%*[^\n]");              /* assorbe i caratteri in piu` sulla riga */
    getchar();                                              /* assorbe invio */
  }

  for (i = 0; (!accesso) && i < max_pasw; i++) {
    accesso = 1;  /* assumo che la password immessa coincida con quella nota */
    for (j = 0; accesso && password[j] != '\0' && psw_note[i][j] != '\0'; j++)
      if (password[j] != psw_note[i][j])
        accesso = 0;                          /* la password non e` corretta */
    accesso = password[j] == '\0' && psw_note[i][j] == '\0';
  }

  if (accesso)
    printf("Login CORRETTA\n");
  else
    printf("Login NON CORRETTA\n");
  /* while (loop) ; */                   /* loop infinito - blocca il sitema */

  fine();

  return 0;
}


void fine(void)
{
  printf("\ninvio  per finire\n");
  while (getchar() != '\n');
}