fehler in der schleife?

Thomas-H

Mitglied
Was ist an dieser Schleife falsch? Sie läßt sich zwar Compilieren aber wenn ich danach einen string mit getline angeben will wird die ausgabe datei nur mit .txt benannt.

wenn ich die endlos schleife weg lasse klappt es einwandfrei.

C++:
for (;;)
		{	
			char Input_Sign;
			cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n"; 
			cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein:  ";
			cin >> Input_Sign;
				if (Input_Sign == 'j')
				{
					stplus();
					LINE_EXPENDITURE();
				}
				if (Input_Sign == 'n')
				{
					break;
				}
		}
 
Ich würde das Problem mit einer do/while schlife lösen weil die auch sicher einmal durchlaufen wird!


do
{

dein text....

}
while(j==false); /*oder so was in die richtung halt was du halt als Fortführungskriterium haben willst*/
 
Versuchs mal so:

Code:
                char sign;
                do
		{	
			cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n"; 
			cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein:  ";
			cin >> sign;
				if (sign == 'j' || sign == 'J')
				{
					stplus();
					LINE_EXPENDITURE();
				}
		} while(sign != 'n' || sign != 'N');

Wie gesagt passt do/while hier perfekt. Außerdem kann es ja sein dass jemand einen Großbuchstaben eintippt dann sollte es ja auch gehen.
 
moin


Also folgender Code funktioniert einwandfrei:
Code:
	for (;;)
	{
		char Input_Sign;
		cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n";
		cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein: ";
		cin >> Input_Sign;

		if (Input_Sign == 'j')
		{
			cout<<"Ja";
		}
		if (Input_Sign == 'n')
		{
			cout<<"Nein";
			break;
		}
	}

Aber wie soll dir jemand helfen wenn du nciht die Stelle mit der Namensgebung der Datei zeigst?!
Denn an der Schleife an sich kann es nicht liegen.


mfg
umbrasaxum
 
moin bei mir hat ein bissel länger gedauert....hatte ein langes Wochenende :)
nach der vorschleife bestimme ich die Datei klappt auch nur wird der Name nicht übergeben, das heißt ich habe eine .txt Datei aber ohne den Name den ich vorher eingegeben habe
Code:
for (;;)
	{
		char Input_Sign;
		cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n";
		cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein: ";
		cin >> Input_Sign;

		if (Input_Sign == 'j')
		{
			cout<<"Ja";
		}
		if (Input_Sign == 'n')
		{
			cout<<"Nein";
			break;
		}
	}


// der stream sieht so aus:

stream Name;
cout <<"Bitte geben Sie einen Namen fuer Ihre Datei an...";
getline(cin,Name);
std::ofstream Ausgabe((Name+".txt").c_str());
 
habe das ganze jetzt mit der do while schleife ausprobiert und bekomme genau den gleichen Fehler. Datei wird geschrieben nur mit der Endung .txt. Der Name fällt komplett weg.
 
moin


Kannst du nciht einfach nen String vom Typ char[] nehmen.
Code:
	char Dateiname[30];
	cout <<"Bitte geben Sie einen Namen fuer Ihre Datei an...";
	cin.getline(Dateiname, 29);
	strcat(Dateiname, ".txt");

	std::ofstream Ausgabe(Dateiname);


mfg
umbrasaxum
 
Code:
char Dateiname[30];
	cout <<"Bitte geben Sie einen Namen fuer Ihre Datei an...";
	cin.getline(Dateiname, 29);
	strcat(Dateiname, ".txt");

	std::ofstream Ausgabe(Dateiname);

Das sieht sehr gut aus! Kannst Du mir jetzt noch sagen wie ich die Datei in dem Ordner Ausgabe erstelle. Der Ordner besteht bereits und befindet sich eine Ebene höher.
 
Zurück