Arbeiten mit Dateien
-
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
-
It0101 schrieb:
Ansonsten müsste ... "./test.txt" die Datei direkt bei der Executable anlegen.
Nein!
-
Habe ich auch ist aber nirgends zu finden.

-
Kann es sein dass die Datei gar nicht erzeugt wird?
-
jenny.caros schrieb:
Kann es sein dass die Datei gar nicht erzeugt wird?
Wenn du, wie dir gesagt wurde, prüfst, ob die Datei angelegt werden konnte und du keine Fehlermeldung erhältst: nein
sonst: ja
-
jenny.caros schrieb:
Kann es sein dass die Datei gar nicht erzeugt wird?
Nur wenn du komplizierteste Einstellungen getroffen hättest, zu denen du, nichts für ungut, nicht in der Lage wärst und die du auch nicht zufällig hättest vornehmen können. Also effektiv: Klares Nein.
Möglichkeiten, warum es nicht funktioniert:
- Der Quelltext entspricht nicht 1:1 dem, was dir hier gezeigt wurde (der mit der Fehlermeldung!)
- Du führst das falsche Programm aus
- Du erzeugst das Programm aus dem falschen Quelltext
- Du guckst an der falschen Stelle nach der DateiProbier mal:
#include <fstream> #include <iostream> using namespace std; int main() { cout << "Dieses ist ganz bestimmt das richtige Programm!\n"; ofstream f("fhgehnfenveifn.txt"); if(!f) { cout << "Kann Datei nicht erstellen\n"; char warte; cin >> warte; return; } f << "Das geht in die Datei\n"; cout << "Es wurde etwas in die Datei geschrieben.\n"; char warte; cin >> warte; }(Das mit dem warten solltest du dir so übrigens nicht abgucken. Ich habe es bloß aus Faulheit von oben kopiert, um ein paar ganz dumme mögliche Fehler zu vermeiden. Eigentlich ist das extrem schlechter Stil)