In externe Datei speichern
-
Hallo,
ich versuche eine Variable in eine externe Datei zu schreiben. Und zwar so:FILE *fp; if((fp=fopen("namen.txt","w"))==NULL); fprintf(fp,"%s ",name); fclose(fp);Jetzt wird aber in die externe Datei aber immer nur der erste Buchstabe der Variable "Name" geschrieben. Ich möchte natürlich das die komplette Variable in der txt-Datei landet.
Was mache ich falsch?
-
// Da falsch bzw. kein Lösungsansatz gelöscht.
-
Für den Fall dass du nicht C machst (wie es aussieht), sondern tatsächlich C++(weil du ins C++-Forum geschrieben hast), solltest du das ganze völlig anders angehen, nämlich mit iostreams. Das sähe dann so aus:
#include<iostream> #include<fstream> [...] std::ofstream file("namen.txt"); if (file.is_open()) { file<<name; file.close(); }
-
Ja ich mach das in C++. Aber wenn ich das so mache wie du meinst, dann bekomme ich da nur Unsinn raus. Wenn ich z.b. in der Variable den Namen "anbo" drin hab dann schreibt der in die externe Datei "0034DC70".
-
Also das scheint so zu klappen nur mit der Variable nicht, weil wenn ich folgendes schreibe:
std::ofstream file("namen.txt"); if (file.is_open()) { file << name << "hallo"; file.close(); }dann steht "0034DC70hallo" in der Datei.
-
Dann ist die Lösung ganz einfach: Zeig mal was name für einen Typ hat! Ich wette, du hast da sowas wie char*.
-
Muss man einen Zeiger nicht nach void* casten, wenn man seine Adresse schreiben möchte?
-
name hat den Typ CString.
CString name;
-
Dann wird CString wohl keinen << Operator für streams besitzen.
Das beste wäre wenn du statt CString std::string verwendest.
Ansonsten musst du den CString entweder erstmal nach char* oder eben std::string konvertieren.
-
Deshalb wollt ich es ja so machen wie ich es am Anfang gepostet habe. Aber das geht irgendwie nicht. Obwohl das ja auch klappen müsste.
-
Nun, wieso sollte printf, dass nur mit nativen C Datentypen vernünftig umgehen kann auf einmal etwas mit Cstring anfangen können? Ist das nicht irgendeine MFC-Klasse? Vielleicht hilft dies weiter:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39103.html
-
Ok, jetzt habe ich das mit iostream gelöst. Dann hab ich noch eine Frage wie kann ich damit die Daten aus der externen Datei in eine Variable speichern?
-
while( solange zeiger noch nicht am ende ) { hole zeile für zeile und speichere diese in einer variabe }
-
Hat vielleicht auch noch wer ein Beispiel, wie ich das genau machen muss? Wäre echt nett.
-
-
Ein bisschen schlauer bin ich jetzt, aber so wirklich klappen tut das trotzdem nicht:
std::ifstream file("namen.txt"); while(!file.eof()) { file>>name; printf("%s",name); } file.close();Fehlermeldung von Mircosoft Visual Studio:
Unbehandelte Ausnahme bei 0x104e63ee (msvcp90d.dll) in Programmname.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00416814.Was mache ich falsch?
-
Kurz und knapp, meiner meinung nach der einfachste weg, Daten von einer Datei in einen std::string zu schreiben. Du kannst natürlich auch was anderes als nen std::string nehmen.
std::ifstream file("namen.txt"); char ch; while( file.get(ch) ) string.push_back(ch);
-
Da bekomme ich die Fehlermeldung:
Links von ".push_back" muss sich eine Klasse/Struktur/Union befinden.std::ifstream file("namen.txt"); char ch; while(file.get(ch))name.push_back(ch);
-
name sollte hier vom Typ std::string sein.
-
Anbo schrieb:
Da bekomme ich die Fehlermeldung:
Links von ".push_back" muss sich eine Klasse/Struktur/Union befinden.std::ifstream file("namen.txt"); char ch; while(file.get(ch))name.push_back(ch);was meinst du, warum er string.push_back(ch) geschrieben hat?
tip - das fehlt noch:
#include <string>
und
std::string name;bb