Arbeiten mit Dateien
-
Was meinst du mit wo die .exe gestartet wurde?
-
jenny.caros schrieb:
Was meinst du mit wo die .exe gestartet wurde?
In dem Verzeichnis, in dem die EXE liegt, ist auch deine "Test.txt"
-
Dort wo meine .exe-Datei ist wurde auch keine Text.txt angelegt. Auch wenn ich sie selber anlege wird der Text nicht reingeschrieben. Woran kann das liegen?
-
Eine Datei ohne Pfadangabe wird im working directory angelegt. Wo das ist hängt davon ab, wie das Programm gestartet wurde bzw. ob man es geändert hat. Am Besten gibst du also die Datei mit komplettem Pfad an, also z.B. "C:/TEMP/x.txt".
-
manni66 meinst du so: f.open("C:\...\...\Test.txt"); ? Also einen beliebeigen Pfad und die Datei wird dort erstellt? Das funktioniert aber iwie nicht.
-
f.open("C:\**...\**...**\**Test.txt")
-
Wo lernt ihr eigentlich, so schlecht zu programmieren?
-
#include <fstream> using namespace std; int main() { fstream f; f.open("Test.txt", ios::out); f << "Das geht in die Datei" << endl; f.close(); }[/quote]
#include <fstream> using namespace std; int main() { ofstream f("Test.txt"); f << "Das geht in die Datei\n"; }
-
Also ich für meinen Teil bring mir das selbst bei.
-
Belli schrieb:
f.open("C:\**...\**...**\**Test.txt")
Naja, "C:/.../...**/**Test.txt" ist auch nicht soo schlecht.
-
volkard schrieb:
[...]
Kürzer, eleganter, Konstruktor und Destruktor sinnvoll genutzt, aber im Ergebnis funktioniert das auch nicht anders.
Wenn also vorher die Datei nicht gefunden wurde, wird das auch jetzt nicht anders sein.
-
Und es ist egal welchen Pfad ich angebe, die Datei wird immer dort gespeichert?
-
volkard schrieb:
Belli schrieb:
f.open("C:\**...\**...**\**Test.txt")
Naja, "C:/.../...**/**Test.txt" ist auch nicht soo schlecht.
Sag ich auch nicht. Ich versuche aber immer, so nah wie möglich bei den Originalen zu bleiben, um den Poster nicht zu verwirren.
In diesem konkreten Fall ist es wahrscheinlich aber auch nicht näher als Dein Vorschlag.
Allerdings habe ich genau aus dem Grund vermieden aus:fstream f;
f.open("datei", ios::out);
...das
ofstream("datei");
...zu machen. Wenn ich selbst mit fstreams arbeite, nehme ich natürlich auch die letztere Variante, aber wie gesagt, ansonsten versuche ich schon, so wenig wie möglich am geposteten Code zu ändern, wenn nicht die Frage gerade dahin zielt.
-
jenny.caros schrieb:
Und es ist egal welchen Pfad ich angebe, die Datei wird immer dort gespeichert?
Was ist das für eine dämliche Frage?
Nein, sie wird nicht immer dort gespeichert.
Das Betriebssystem entscheidet immer auf Grund eines Zufallsgenerators, ob es die Datei unter dem angegebenen Pfad speichert, oder ganz woanders, wo niemand damit rechnet. Ebenso wie es zufällig entscheidet, ob es den Inhalt hineinschreibt, den Du willst, oder ob es zufällig einen generiert.
-
Ich frage das weil es bei mir nicht der Fall ist. Ich habe schon öfters einen Pfad angegeben so wie es hier steht aber die Datei wird einfach dort nicht generiert.
-
Windows?
Probier mal das hier (von Volkard):#include <fstream> #include <iostream> using namespace std; int main() { ofstream f("c:\\Test.txt"); if(!f) { cout << "Kann Datei nicht erstellen\n"; char warte; cin >> warte; return; } f << "Das geht in die Datei\n"; }
-
Oder das:
#include <cstdio> #include <cerrno> int main(){ using namespace std; errno=0; FILE* f = fopen("Datei.txt", "w"); if(f == NULL) perror("Error:"); fprintf(f, "Hallo, Welt\n"); fclose(f); }Vielleicht kommen wir mal an eine Fehlermeldung.
-
Ansonsten müsste ... "./test.txt" die Datei direkt bei der Executable anlegen.
-
Eure Programme laufen fehlerfrei, nur von der Datei ist wieder nix zu sehen. Ja alles unter Windows.
-
gib der Datei mal einen seltsamen (= eindeutigen) Namen ("asdfghjkl.txt") und durchsuche anschließend mal eine Festplatte danach