Problem mit Filehandling
-
Guten Tag an alle und frohe Ostern noch nachträglich^^
Ich hab ein Problem mit dem Schreiben in eine Datei.
Ich hab eine Funktion, die den Pfad in einem char[MAX_PATH] übermittelt bekommt.
Aber wenn ich nun versuche die datei mit ofstream bla(pfad, ios::out|ios::trunc);
zu öffnen will er das nicht tun.
Hier mal der Source:int overwrite(char fil[MAX_PATH]) { cout << fil << endl; //hier wird der Pfad noch korrekt angezeigt ofstream blau(fil, ios::in|ios::out|ios::trunc); blau << "Hallo ich bin der Text der da rein will"; //Das passiert leider nie =( blau.close(); return 0;
Ich wäre froh wenn mir da jemand helfen könnte.
Sollte man .exe-Dateien lieber mit ios::binary öffnen?mfg
Deliruz
-
Ich weiß nicht, was bei dir nicht klappt. Bei geht es wunderbar. Sowohl das Schreiben in eine .txt als auch in eine .exe ist kein Problem (warum sollte das auch ein Unterschied sein).
Hier kannst du vergleichen:
#include <Windows.h> #include <stdlib.h> #include <fstream> #include <iostream> int overwrite(char fil[MAX_PATH]); using namespace std; int main() { overwrite("C:\\test.exe"); return 0; } int overwrite(char fil[MAX_PATH]) { cout << fil << endl; //hier wird der Pfad noch korrekt angezeigt ofstream blau(fil, ios::in|ios::out|ios::trunc); blau << "Hallo ich bin der Text der da rein will"; //Das passiert leider nie =( blau.close(); return 0; }
EDIT: Bist du sicher, dass Pfad und Dateiname stimmen? Eventuell wurde eine neue Datei angelegt, anstatt deine Zieldatei zu überschreiben.
-
Erstmal vielen Dank für die Antwort
Hmm...kann es daran liegen, dass mein Pfad so:
"C:\Ordner/test.exe"
und nich so:
"C:\\Ordner\test.exe"
aussieht?
Die Datei existiert auf jeden Fall.
-
Deliruz_not_logged_in schrieb:
Erstmal vielen Dank für die Antwort
Hmm...kann es daran liegen, dass mein Pfad so:
"C:\Ordner/test.exe"
und nich so:
"C:\\Ordner\test.exe"
aussieht?
Die Datei existiert auf jeden Fall.In C++ werden sogenannte Escapesequenzen mit einem Backslash ('\') eingeleitet (z.B. '\n' = Newline/Zeilenvorschub). Google einfach mal danach. Wenn du nun wirklich einen Backslash in einem String brauchst, musst du das ebenfalls über eine Escapesequenz machen ('\'). Korrekt wäre also Folgendes:
"C:\\Ordner\\test.exe"
Alternativ kannst du auch Slashes verwenden:
"C:/Ordner/test.exe"
-
DER TEXT STEHT IN DER ANWENDUNG DRIN !!!
Gib in der Eingabeaufforderung
type C:\.....\test.exe
ein und es erscheint dieser Text !!!!
Die Punkte stehen für den restlichen pfad !
-
C++Laie1 schrieb:
DER TEXT STEHT IN DER ANWENDUNG DRIN !!!
Gib in der Eingabeaufforderung
type C:\.....\test.exe
ein und es erscheint dieser Text !!!!
Die Punkte stehen für den restlichen pfad !
Ehm was willst du mir damit sagen?
type is batch und zeigt nen Inhalt an, hat aber nix mit dem Thema zu tun oÔ_matze Thx für die Antwort
Thema kann geclosed werden, hab jetzt Slashes verwendet.
-
Er meint wahrscheinlich, dass du Strings in der EXE im Klartext lesen kannst. So kannst du überprüfen, was die Escapesequenzen aus deinem String gemacht haben. Ist aber umständlich und unnötig, wenn man weiß, wie's geht...