-= *["]Mr.Coffee["]* =- Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Hi Bin neu hier und habe eine kleine Frage an das Forum. Wie leite ich die Ausgabe in C++ in eine Datei? hab es hiermit probiert: #include fstream; void adresse :: speichern_datei() { cout << "Die Daten werden nun in die Datei: Adressverwaltung.txt geschrieben." << endl; fstream d; d.open("C:\\Temp\\Adressverwaltung.txt", ios::app); d << "Nachname"; d << name; d <<" Vorname"; d << vorname; d << " Strasse"; d << alter; } Kann mir vielleicht einer von euch weiterhelfen? Hab keine Ahnung was ich falsch gemacht habe. Gruß Johannes Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Hi, also ich arbeite mit den Funktionen fopen(zum Öffnen der Datei), fwrite (zum reinschreiben) und fclose (damit Du die Datei wieder schließen kannst). Hast Du eine Hilfe dabei? Mit welcher Programmierungebung arbeitest Du? Bine Zitieren
-= *["]Mr.Coffee["]* =- Geschrieben 30. Januar 2002 Autor Geschrieben 30. Januar 2002 Arbeite mit Microsoft Visual C++ Hab die Hilfe (MSDN) leider nicht. Kannst du mir grad mal ein Beispiel für die Syntax von fopen und fclose geben? Gruß Johannes Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Klar! Also, um die Datei zu öffnen: FILE *fopen( const char *filename, const char *mode ); Als filename kannst Du das File in das Du schreiben willst (oder aauch aus dem Du lesen willst) direkt mit Pfad angeben. Willst Du es aber zwischendurch eventuell mal schließen (ich muss das in meinen Programmen immer wieder mal), dann ist es besser so das Du ein Char-Array erstellst in das Du den Pfad kopierst. So, um das File nun öffnen zu könenn (und um zu kontrollieren ob es geklappt hat, empfiehlt es sich ein FILE zu definieren, dem Du dann das Ergebnis lieferst. Als mode steht Dir folgendes zur Verfügung: "r" Opens for reading. If the file does not exist or cannot be found, the fopen call fails. "w" Opens an empty file for writing. If the given file exists, its contents are destroyed. "a" Opens for writing at the end of the file (appending) without removing the EOF marker before writing new data to the file; creates the file first if it doesn’t exist. "r+" Opens for both reading and writing. (The file must exist.) "w+" Opens an empty file for both reading and writing. If the given file exists, its contents are destroyed. "a+" Opens for reading and appending; the appending operation includes the removal of the EOF marker before new data is written to the file and the EOF marker is restored after writing is complete; creates the file first if it doesn’t exist. Um in die Datei was zu schreiben: size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); buffer ist hier das was Du in die Datei schreiben willst. Nimm am besten ein Array in das Du das packst was Du in die Datei schreiben willst. szie_t size ist die göße des Datentyps. size_t count ist die Anzahl der Zeichen die Du schreiben willst. FILE ist das file in das Du schreiben willst. so, sicherlich ganz schön viel. Hier ein Beispiel: #include <blablabla.h> void main() { char Text[]={"Was ich schreiben will!"}; // Das ist das was Du in die Datei schreiben willst char Datei[]={"c:\\Test.txt"}; // Das ist die Datei, also der filename FILE *MeineDatei; // erklärt sich von selbst if((MeineDatei = fopen(Datei, "a+"))!=0) // Abfrage ob das öffnen geklappt hat { fwrite(Text, sizeof(char), strlen(Text), MeineDatei); } else cout << "Fehler - Datei konnte nicht geöffnet werden!\n"; fclose(MeineDatei); // Schließen der Datei, ganz wichtig }[/PHP]So, ich als include Datei brauchst Du glaube ich für fopen und fwrite nur die stdio.h! Wenn Du noch was wissen willst, weil es sicher nicht alle Bereiche abdenckt, dann frag. Will nur nicht noch mehr schreiben was Du eventuell nicht brauchst. Bine Zitieren
Poldi Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 das von woodstock ist zum öffnen von dateien unter c. unter c++ geht das aber auch anders. dein ansatz war schon fast richtig: fstream inkludieren und dann aber: ofstream zum öffnen von ausgabedateien -> schreiben ifstream zum öffnen von eingabedateien -> lesen Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 @Polid: Ok, sorry! Funktioniert aber trotzdem. Und danke Dir nochmal.... Bine Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Da ich nicht erst C gelernt habe, sondern gleich C++ lerne weiß ich das nicht wirklich was da jetzt reines C ist, und was nicht. Bine Zitieren
-= *["]Mr.Coffee["]* =- Geschrieben 30. Januar 2002 Autor Geschrieben 30. Januar 2002 bin grad dabei es zu testen. irgendwie funzt es noch nicht so ganz geh jetzt erstmal mit meinen kollegen essen. werds dann nochmal probieren @Poldi des probier ich auch mal aus. denke dass das sogar ein wenig einfacher ist. @Poldi & Woodstock thx fürs schnelle antworten. Gruß Johannes Zitieren
Poldi Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Original geschrieben von Woodstock Da ich nicht erst C gelernt habe, sondern gleich C++ lerne weiß ich das nicht wirklich was da jetzt reines C ist, und was nicht. Bine ist ja auch eigentlich egal, hauptsache es funzt ... ;o) Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Ja, das stimmt wohl.... Bine Zitieren
-= *["]Mr.Coffee["]* =- Geschrieben 30. Januar 2002 Autor Geschrieben 30. Januar 2002 hab es mit fstream gelöst find ich etwas einfacher. hat aber auch en kleinen Nachteil. ist keine Abfrage drin ob des Öffnen geklappt hat. #include <fstream.h> int main() { ofstream dat_aus; dat_aus.open("D:\\test.txt"); dat_aus.write("Hallo", sizeof("Hallo")); dat_aus.close (); return 0; } @Poldi kann man die Abfrage da noch irgendwie einfügen? Gruß Johannes Zitieren
Woodstock Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Versuch es mal mit 'is_open'! Null wird zurückgegeben wenn die Datei nicht offen ist. Bine Zitieren
Poldi Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 oder so: ifstream datei("Dateiname.txt"); if (!datei) { cout << "Datei nicht geöffnet"; } Zitieren
DocMabuse Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Noch eine Möglichkeit wäre diese hier: ... ofstream fout ("c:\\meinedatei.txt", ios::out); if (fout.good()) { //der Zweig wird ausgeführt, wenn die letzte Operation mit "fout" erfolgreich war. } ... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.