Dateiinhalt in Variable
-
Hi-
Ich bin ein C Neuling, und lerne das erst seit einigen Wochen (doofe Schule xD). Deshalb entschuldige ich mich vorab für meinen Mangel am Fach(wort)wissen und somit an meiner Ausdrucksweise.
Mein bescheidenes Problem ist folgendes: Ich habe eine Datei in der etwas steht. Den Inhalt möchte ich als Inhalt von einem Chararray haben.
Ich hab mal ein Auszug aus meinem text, der natürlich nicht geht, aber zur Verständnis meines Problems dienen soll.char *mgrname; int get_data(void) { FILE *savedata; char abbruch = '#'; char zeichen; savedata = fopen("savedata.f1","w+"); if (savedata == NULL) { printf("Fehler: savedata.f1 konnte nicht geoeffnet werden."); } else { while ((zeichen = getc(savedata)) != abbruch) putc(zeichen,mgrname); } }Ich hoffe, dass ich es verständlich rüberbringen und würde mich über eine Berichtigung meines Textes und ggf. einer Erklärung sehr freueun.
Danke~-
Liebe Grüße
Jasmin
-
-
guck am besten mal unter fstream nach.
-
Hier ist eine mögliche Lösung in C++. Es wird der Inhalt der Datei via Streamiterator auf einen Filestream in einen String kopiert. Dieser wird anschließend auf der Standardausgabe ausgeben. Die Kommentare sollten alles weitere erklären.
#include <cstdlib> #include <iostream> #include <fstream> #include <string> #include <iterator> using namespace std; int main() { /** * Filestream auf Datei "test". Prüfen ob sich die Datei öffnen * lässt und ob es möglich ist den Stream korrekt zu initialisieren */ ifstream is("test"); if (!is) return EXIT_FAILURE; // im Falle eines Fehlers /** * WhiteCharacters (Leerzeichen, Newlinezeichen, etc.) sollen nicht * übersprungen werden. Das Flag skipws wird nicht gesetzt. */ is.unsetf(ios_base::skipws); /** * Streamiterator auf den Stream is. Defaultkonstruktor verweist auf * das Ende des Streams */ istream_iterator<char> ii(is); istream_iterator<char> eos; // Ende des Streams /** * Den Inhalt der Datei via Streamiterator auf Filestream ans Ende * des Strings v anhängen */ string v; copy(ii, eos, back_inserter(v)); /** * String v auf der Standardausgabe ausgeben */ cout << v << endl; }