codice:
#include <stdio.h>
#include <string.h>
main ()
{
char pass [128];
char esci;
for ( ; ; )
{
printf ("Inserisci la password per uscire:\n");
fgets (pass, sizeof(pass), stdin);
if (strcmp(pass,"ciao\n") == 0)
/* oppure */
if (strncmp(pass,"ciao",4) == 0)
break;
}
printf ("Complimenti!\n");
/* getchar(); al posto di scanf */
scanf ("%c",&esci);
}
1) per comparare le stringhe in c si usa la funzione strcmp()
dichiarata in string.h,
strncmp() compara i primi n caratteri
2) la funzione gets() rende il tuo programma vulnerabile da exploit
basati su buffer overrun, meglio usare fgets che ti permettere
di dare un limite al numero di caratteri da registrare.
3) in C89 non puoi dichiarare una variabile in mezzo al codice
char esci;
lo puoi dichiarare solo all'inizio di un blocco {},
In c99 si può fare, ma questo standard è supportato solo con GCC
quindi niente VC++ o Borland.
In c++ si può fare da sempre.
4) al posto di scanf("%c", &esci);
puoi usare la più semplice getchar(); che restituisce anche
il carattere letto nel caso ne avessi bisogno.
CIao