Hilfe Namenabfrage funktioniert nicht [Gelöst]



  • ich möchte ein kleines Spiel machen das ist natürlich nur der Anfang:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    //Funktionsprototypen
    char NameAbfrage (char SpielerName[20]);
    
    //Hauptprogramm
    int main ()
    {
    	//Variablen
    	char SpielerName[20];	//SpielerName
    	char Spielstand;		//Für Abfrage Spielstand
    
    	//Abfrage Spielstand
    	cout << "(n)eues Spiel oder (a)ltes Spiel" << endl;
    	cin >> Spielstand;
    
    	//if else Schachtel
    	if (Spielstand == 'n')
    	{
    		//Menü Ausgabe
    		cout << "Nop-Erstellen" << endl;
    		cout << "--------------" << endl;
    		NameAbfrage (SpielerName);	//Spielername abfragen
    	}//Neuse Spiel
    
    	else if (Spielstand == 'a')
    	{
    
    	}//Altes Spiel
    
    	else
    	{
    		cout << "Falsche Eingabe" << endl;
    	}
    
    	return 0;
    }
    
    // Namen Eingeben für Spiel
    //
    char NameAbfrage (char SpielerName[20])
    {
    	cout << "Bitte Namen fuer Nop eingeben \n(zwischen 1 und 18 Zeichen): ";
    	cin.get (SpielerName, 19);
    	//Speichern
    	ofstream Output ("SpielerName.sp", ios::binary);
    	Output.write ((char*) &SpielerName, sizeof (SpielerName));
    	Output.close ();	//Datei schließen
    
    	cout << endl;
    
    	return 0;
    }	//Name
    

    mein complimierer zeigt keinen Fehler aber wenn ich das Programm starte überspringt er einfach die Namensabfrage. Warum? und wie kann ich das ändern?
    Bin erst Anfänger.

    /edit pumuckl: [cpp]-Tags eingefügt, nächstemal bitte selber machen 😉



  • Liegt wahrscheinlich daran, dass du den Eingabepuffer zwischendurch leeren musst:

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1383244.html



  • _matze schrieb:

    Liegt wahrscheinlich daran, dass du den Eingabepuffer zwischendurch leeren musst:

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1383244.html

    also daran liegst nicht habs ausprobiert funktioniert trotzdem nicht.
    trotzdem danke



  • Bau doch einfach nach der Eingabe des Spielerstandes zum Prüfen noch eine Ausgabe ein:

    cout << "(n)eues Spiel oder (a)ltes Spiel" << endl;
        cin >> Spielstand;
    
        cout << "Eingabe: " << Spielstand << endl;
    


  • Doch, liegt daran. Probier das hier mal:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    //Funktionsprototypen
    char NameAbfrage (char SpielerName[20]);
    
    //Hauptprogramm
    int main ()
    {
    	//Variablen
    	char SpielerName[20];    //SpielerName
    	char Spielstand;        //Für Abfrage Spielstand
    
    	//Abfrage Spielstand
    	cout << "(n)eues Spiel oder (a)ltes Spiel" << endl;
    	cin >> Spielstand;
    
    	std::cin.clear();
    	std::cin.ignore(std::cin.rdbuf()->in_avail());
    
    	//if else Schachtel
    	if (Spielstand == 'n')
    	{
    		//Menü Ausgabe
    		cout << "Nop-Erstellen" << endl;
    		cout << "--------------" << endl;
    		NameAbfrage (SpielerName);    //Spielername abfragen
    	}//Neuse Spiel
    
    	else if (Spielstand == 'a')
    	{
    
    	}//Altes Spiel
    
    	else
    	{
    		cout << "Falsche Eingabe" << endl;
    	}
    
    	getchar();
    	return 0;
    }
    
    // Namen Eingeben für Spiel
    //
    char NameAbfrage (char SpielerName[20])
    {
    	cout << "Bitte Namen fuer Nop eingeben \n(zwischen 1 und 18 Zeichen): ";
    	cin.get (SpielerName, 19);
    
    	std::cin.clear();
    	std::cin.ignore(std::cin.rdbuf()->in_avail());
    
    	//Speichern
    	ofstream Output ("SpielerName.sp", ios::binary);
    	Output.write ((char*) &SpielerName, sizeof (SpielerName));
    	Output.close ();    //Datei schließen
    
    	cout << endl;
    
    	return 0;
    }    //Name
    


  • _matze schrieb:

    Doch, liegt daran. Probier das hier mal:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    //Funktionsprototypen
    char NameAbfrage (char SpielerName[20]);
    
    //Hauptprogramm
    int main ()
    {
    	//Variablen
    	char SpielerName[20];    //SpielerName
    	char Spielstand;        //Für Abfrage Spielstand
    
    	//Abfrage Spielstand
    	cout << "(n)eues Spiel oder (a)ltes Spiel" << endl;
    	cin >> Spielstand;
    	
    	std::cin.clear();
    	std::cin.ignore(std::cin.rdbuf()->in_avail());
    
    	//if else Schachtel
    	if (Spielstand == 'n')
    	{
    		//Menü Ausgabe
    		cout << "Nop-Erstellen" << endl;
    		cout << "--------------" << endl;
    		NameAbfrage (SpielerName);    //Spielername abfragen
    	}//Neuse Spiel
    
    	else if (Spielstand == 'a')
    	{
    
    	}//Altes Spiel
    
    	else
    	{
    		cout << "Falsche Eingabe" << endl;
    	}
    
    	getchar();
    	return 0;
    }
    
    // Namen Eingeben für Spiel
    //
    char NameAbfrage (char SpielerName[20])
    {
    	cout << "Bitte Namen fuer Nop eingeben \n(zwischen 1 und 18 Zeichen): ";
    	cin.get (SpielerName, 19);
    
    	std::cin.clear();
    	std::cin.ignore(std::cin.rdbuf()->in_avail());
    
    	//Speichern
    	ofstream Output ("SpielerName.sp", ios::binary);
    	Output.write ((char*) &SpielerName, sizeof (SpielerName));
    	Output.close ();    //Datei schließen
    
    	cout << endl;
    
    	return 0;
    }    //Name
    

    vielen dank hattest doch recht jetzt funktioniert.
    dann kann ich weiter machen


Anmelden zum Antworten