# Txt Datei unter angegeben pfad abspeichern



## Randpiss (30. Oktober 2003)

Hallo erstmal,

Ich habe folgendes Problem:
Ich wollt in c++ ein kleines Programmschreiben, das eine .txt Datei einliest und dann unter einem anderen Namen abspeichert.

So, das einlesen und abspeichern funktioniert eigentlich perfekt, nur wenn ich zum abspeichern den Pfad im Programm abfragen will, stürzt das Prog. ab?
also ich meine so:


```
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
    char     filename[128];
    char     filename2[128];
    ifstream file;
    ofstream text;
    char     zeile[1024];

    // Dateinamen einlesen
    cout << "Pfad der einzulesenden Datei: " << flush;
    cin.getline(filename, 127);


    // Datei öffnen
    file.open(filename, ios::in);

	while (! file.eof())
        {
            // Die Datei zeilenweise auslesen
            file.getline(zeile, 1024);
		
            cout << zeile << endl;
        }
	
	file.close();	//Datei schliessen

	
	// Dateinamen einlesen
    cout << "Pfad der zu speichernden Datei: " << flush;	
    cin.getline(filename2, 127);
	

	// Datei speichern
	text.open(filename2, ofstream::out | ofstream::app);

	text << "hallo\n";			//schreibe das in .txt file. (kann auch 'zeile' reinschreiben, is aber nurn test)
	text.close();	//Datei schliessen



    return 0;
}
```

aber wenn ich es so mache:


```
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
    char     filename[128];
    char     filename2[128];
    ifstream file;
    ofstream text;
    char     zeile[1024];

    // Dateinamen einlesen
    cout << "Pfad der einzulesenden Datei: " << flush;
    cin.getline(filename, 127);


    // Datei öffnen
    file.open(filename, ios::in);

	while (! file.eof())
        {
            // Die Datei zeilenweise auslesen
            file.getline(zeile, 1024);
		
            cout << zeile << endl;
        }
	
	file.close();	//Datei schliessen

	/*
	// Dateinamen einlesen
    cout << "Pfad der zu speichernden Datei: " << flush;	
    cin.getline(filename2, 127);
	*/

	// Datei speichern
	text.open("hallo.txt", ofstream::out | ofstream::app);

	text << "hallo\n";			//schreibe das in die .txt file. (kann auch 'zeile' reinschreiben, is aber nurn test)
	text.close();	//Datei schliessen



    return 0;
}
```


dann geht es....
 
Was mache ich falsch
Über hilfe wäre ich sehr dankbar...


----------



## The Nephilim (30. Oktober 2003)

Unter MS - System könnte es an Unterverzeichnispfaden liegen: \ muß im Pfadnamen zu \\ werden.
Sonst vieleicht kontrollieren, daß das Zeilenende \n auch wirklich in filename2 in eine \0 umgewandelt wird und nicht \n\0 in filename2 steht?
Gruß


----------



## Randpiss (30. Oktober 2003)

Nein, das is es leider nicht. Weil wenn ich z.b. statt c:\test.txt einfach nur test.txt schreibe(so sollte er es in dem Verzeichnis erstellen wo is exe ist), kommt der gleiche fehler. Also an dem \\ liegt es nicht!

Und an dem \n\0 liegt es glaub auch net. Denn wenn ich nichts reinscheiben lass, also einfach das 

```
text << "Hallo\n";
```

weglasse kommt der gleiche Fehler.
Copilt (?) es euch mal, damit ihr set was ich meine.
Oder meinst du das anders?

Aber trozdem Danke.


----------



## The Nephilim (30. Oktober 2003)

Bin mir nicht sicher, ob vieleicht nicht die Datei bei mode 'app' schon existieren muß? versuch mal mit: 
if (!text) cout  << "Datei nicht vorhanden";
Nach dem text.open() ,  das Object überhaupt erzeugt werden konnte.


----------

