Fehler bei cin.get(,)
-
Hi,
Ich hab ein Problem bei einer Übungsaufgabe aus meinem C++ Buch. Die Funktion cin.get Funktoniert irgendwie nicht so, wie sie soll.
#include <iostream> using namespace std; //Funktionen int main () { //Strucktur Felder struct st_Felder { bool bFeldstatus; char chFeldName[10]; int Yposi; int Xposi; }; //Variabeln int xEingabe; int yEingabe; int Auswahl; int FelderDurchzaehler; st_Felder Felder[25]; FelderDurchzaehler = 0; //Felder zuweißungs schleife for (int i = 1; i < 6 ; i++) { for (int j = 1; j < 6 ; j++) { Felder[FelderDurchzaehler].Yposi = i; cout << "Koordinaten von Feld "<< FelderDurchzaehler+1 << " Y-posi: " << Felder[FelderDurchzaehler].Yposi; Felder[FelderDurchzaehler].Xposi = j; cout << " X-posi: " << Felder[FelderDurchzaehler].Xposi << endl; FelderDurchzaehler ++; } } //Menü Schleife do { cout << " Feldmaster 1.0" << endl; cout << "-----------------------" << endl; cout << "1. Spielfeld anzeigen" << endl; cout << "2. Feld besetzen" << endl; cout << "3. Felddaten anzeigen" << endl; cout << "4. Spielfeld löschen" << endl; cout << "5. Programm benden" << endl; cin >> Auswahl; cout << "\n\n" << Auswahl << "\n\n"; //Menü Auswahl switch(Auswahl) { //Spielfeld schreiben cout << "\n\n" << Auswahl << "\n\n"; case(1): { FelderDurchzaehler = 0; for (int i = 1; i < 6 ; i++) { for (int j = 1; j < 6 ; j++) { if (Felder[FelderDurchzaehler].bFeldstatus == true) { cout << "X"; } else { cout << "-"; } FelderDurchzaehler ++; } cout << endl; } }break; //Feld besetzen case(2): { cout << "Gebe X-Wert ein: "; cin >> xEingabe; cout << "Gebe Y-Wert ein: "; cin >> yEingabe; cout << "Gebe einen Namen für das Feld ein: "; for(int g = 0; g<25; g++ ) { if ( Felder[g].Yposi == yEingabe ) { if (Felder[g].Xposi == xEingabe ) { Felder[g].bFeldstatus = true; cout << "Feld" << g << "mit den Koordinaten " << Felder[g].Xposi << " und " << Felder[g].Yposi << " wurde true" << endl; cout << "Gebe einen Namen für das Feld ein: "; cin.get (Felder[g].chFeldName, 10); cin.ignore; } } } }break; //Felddaten anzeigen case(3): { cout << "Felddaten anzeigen" << endl; }break; //Spielfeld loeschen case(4): { cout << "Spielfeld loeschen" << endl; }break; //Spiel bennden case (5): { cout << "Vielen Dank fuers benutzen von Feldmaster 1.0" << endl; }break; //Falsche eingabe default: cout << "Bitte Zahl von 1-5 Ausweahlen" << endl; } cout << endl; } while(Auswahl != 5); return 0; }Das Programm gibt zwar keinen Fehler aus, aber kommt in den zeilen 114/115 in eine Endlosschleife, in der es das Menü immer und immer wieder neu schreibt.. Wenn ich die Zeilen 114 und 115 auskommatiere, dann läuft das Programm perfekt..
Hier funktoniert irgendwas nicht..
cin.get (Felder[g].chFeldName, 10); cin.ignore;Ich würde mich über unterstützung freuen

-
Du musst wohl nach dem Einlesen (cin) den Standard-Eingabepuffer (stdin) leeren.
Zum Beispiel so:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349-and-highlight-is-fflush+stdin.html
-
Suchfunktion bemüht? Vielleicht hilft das -> http://www.c-plusplus.net/forum/viewtopic-var-t-is-210036.html