Salve a tutti.
Sto sviluppando un programmino in C++ che deve manipolare dei file di testo.
Il codice ha la seguente struttura:
int main()
{
//
// Dichiaro una stringa (come array di 20 char) per contenere il nome del file
char filename[20] = "";
cout << "Digitare il nome del file: ";
// Riempo la stringa filename con il nome del file passato da tastiera
cin >> filename;
cout << endl;
// Menù iniziale
int option = 5; // Gli viene assegnato un valore a caso per inizializzarla
while(option != 0) // Finchè non si preme 0 lui ripropone il menu
{
cout << "---------------------------------------------------------------------------" << endl;
cout << "Menu: " << endl;
cout << endl;
cout << "1- Creazione del file "<< filename << " (o apertura se gia' esistente) e inserimento" << endl;
cout << " di una stringa al suo interno;" << endl;
cout << "2- Modifica di una stringa all'interno del file " << filename << ";" << endl;
cout << "3- Cancellazione del file " << filename << ";" << endl;
cout << "4- Scelta di un altro file;" << endl;
cout << endl;
cout << "Scegliere l'azione da compiere (0 per terminare): ";
cin >> option;
cout << endl;
switch(option)
{
case 1:
fileCreation(filename);
break;
case 2:
//
break;
case 3:
//
break;
case 4:
cout << "Digitare il nuovo nome del file: ";
cin >> filename;
cout << endl;
break;
case 0: break; // per consentire l'uscita dallo switch;
default:
cout << "Opzione non disponibile. Digitare una opzione corretta" << endl;
cout << endl;
break;
} // fine del menu switch
} // fine del while
return 0;
}
In pratica il programma propone un menu all'interno di un ciclo while condizionato dal valore della variabile opzione. In base al suo valore un costrutto switch seleziona la voce del menu. Se digito 0 (zero) esco dal programma.
Ma veniamo al mio problema.
Quando lancio l'esecuzione del programma, alla prima iterazione del ciclo while entra correttamente nel costrutto switch, io eseguo l'opzione 1 (che lancia la funzione fileCreation), e una volta eseguita il ciclo dovrebbe ripetersi, am il problema è che esso mi mantiene in memoria il settaggio dell'opzione 1 e me la ripropone all'infinito, come se il metodo cin restasse con il buffer ancora impostato allo stesso valore, invece di fermarsi di nuovo al cin ed attendere un mio input.
Come posso fare?
Grazie