Pfad in einen String eingeben lassen.
-
Ich müßte für eine Aufgabe in der Schule, eine Datei einlesen. Wir sollen dazu den Benutzer fragen wo die Datei denn auf der Festplatte liegt. Danach soll er den Pfad eingeben und wir sollen den dann weiter verwenden.
Ich hab jetzt schon rausgefunden das der Pfad als String angegeben werden kann. Wenn ich jetz allerdings den String nur bei fopen einfüge funzt das net. Könnt ihr mir da helfen?
-
bethrezen schrieb:
Ich müßte für eine Aufgabe in der Schule, eine Datei einlesen. Wir sollen dazu den Benutzer fragen wo die Datei denn auf der Festplatte liegt. Danach soll er den Pfad eingeben und wir sollen den dann weiter verwenden.
Ich hab jetzt schon rausgefunden das der Pfad als String angegeben werden kann. Wenn ich jetz allerdings den String nur bei fopen einfüge funzt das net. Könnt ihr mir da helfen?
das sollte aber reichen. Zeig uns bitte deinen Code & die Fehlermeldung!
Uebrigens ist das ein C-Problem, nicht ein C++ Problem

-
Soweit ich weiss fordert fopen als Parameter einen NULL-terminierten String.
Dieser ist nicht vom Typ std::string sondern vom typ char *.
Wenn du mit std::strings arbeitest, dann solltest du diesen bei der Uebergabe an fopen in einen NULL-terminierten String umwandeln. Das funktioniert mit der std::string-Methode c_str();FILE *data = fopen(stringname.c_str(),...);Und schon ist es wieder ein C++ Problem

Wo wir uebrigens gerade da sind... schau dir lieber mal fstreams an... Die sind einfacher hand zu haben als das fruehere File Handling von C.
-
sry wenns c ist aber uns wird in der schule gesagt das es c++ ist. Wir haben bisher auch nur das eine gelernt kanns so nur schwer unterscheiden. Und nochmal entschuldigung ich hatte nur nen kleinen Fehler drin und hab das jetz erst gesehen es geht, trotzdem danke.
Es sieht im mom so bei mir aus:
FILE *test; char pfad[100],blubb[100]; cout << "Bitte geben Sie den Pfad ihrer Datei ein"; gets(pfad); test=fopen(pfad,"r+"); for (int i=0;i<99;i++) { fread(&blubb[i],sizeof(char),1,test); } for (int i=0;i<99;i++) { cout << blubb[i]; } fclose(test); getchar();Würde es da noch schönere Methoden geben?
-
bethrezen schrieb:
Würde es da noch schönere Methoden geben?
LOL. Ja, das kannste aber laut sagen:
cout << "Bitte Pfad eingeben: " << flush; string pfad; getline(cin, pfad); ifstream test(pfad); string blubb; test >> blubb; cout << blubb;/EDIT: Hier fehlt natürlich jegliche Fehlerbehandlung ...
-
Ja seit C++ gibt es da wirklich bessere Methoden, aber wenn ihr das so in der Schule habt, dann krieg erstmal das zu 100% auf die Reihe.
Danach kannst du mal unter folgenden Themen nachschlagen:
1. Filestreams C++
2. iostreams (istream)
3. Strings
-
da war einer schneller als ich

-
danke ich werd mr das demnächst mal ansehen.