PDA

View Full Version : [C++] un if che mi blocca un cin.get???


gyborg
08-07-2004, 14:37
Ho questo problema da niubbo, sarà sicuramente una maialata,cerco qualcuno che mi illumini....
Ho un blocco di codice contenente un cin.get. Bene, questo preso da solo funziona benissimo, expr viene introdotta da tastiera senza prbl, se invece metto tutto il blocco all'interno di un normale if (che fa la scelta di questo blocco dal menu), mi si inchioda il programma! Il cursore diventa lampeggiante come se si dovesse introdurre la stringa, ma il programma è bloccato, non si riesce ad introdurre niente, e la cpu è occupata al 100% da sta minchia di programmino!!!!
Ecco un esempio di ciò che intendo:
char a;
cin >> a;
if (a=='i'){
char expr[100];
cin.get (expr, 100, '\n');
while ( cin.get()!='\n' );

}Perchè questo codice non funziona? Io non vedo dove sta l'errore! :confused:
PS: Se la soluzione risulterà troppo semplice potete fustigarmi :sofico:

gyborg
08-07-2004, 16:11
Siete in tanti... chi mi sa aiutare? :muro:

Luc@s
08-07-2004, 16:58
You could try this

char a;
cin >> a;
if (a=='i'){
cout << endl; // svuota i buff di in e out
char expr[100];
cin.get (expr, 100, '\n');
while ( cin.get()!='\n' );

}


Dimmi se funzia ;)

gyborg
08-07-2004, 18:05
Grazie Lucas, ma non funziona neanche così.

Qualcosa di + ho capito però: non è l'if che rompe, ma il "cin >> a " prima del cin.get!!! Infatti se tolgo l'if non funziona lo stesso, mentre indipendentemente dall'if, se tolgo il cin x scegliere il blocco di istruzioni, funziona. Credevo che fosse l'if xchè quando lo teglievo, toglievo anche il cin >> a xchè pensavo non desse fastidio :muro:
Cmq... come posso risolvere sta cosa? Come fanno il cin >> ed il cin.get a scontrarsi così? Come mai messi insieme nel modo precedente non fungono?

kk3z
08-07-2004, 19:11
prova ad usare un fflush(stdin); prima del cin.get :confused: