In ein File schreiben - Problem



  • Hallo,

    ich muss für die Schule ein CD Verwaltungsprogramm schreiben. Der Benutzer soll Nummer, Titel, Interpret etc. eingeben. Danach schreibt eine Funktion den String in ein File.

    void schreibeInDatei(CD cd, FILE *fp)
    {
    	char s[100];
    	sprintf(s,"%d %s %s %s %f", cd.nr, cd.titel, cd.interpret, cd.genre, cd.preis);
    	fputs(s,fp);
    }
    

    Doch wenn der Benutzer die Funktion erneut aufruft, werden die bereits gespeicherten Daten immer überschrieben. Wie kann ich das umgehen?

    So wird die Funktion in meinem Programm aufgerufen:

    switch(antwort)
    		{	case 'a':	fp=fopen("C:\\cd.txt","a");
    					cd=eingabe();
    					schreibeInDatei(cd,fp);
    					fclose(fp);
    					break;
            }
    

    Ich wäre für jede Hilfe sehr dankbar!

    Greetinx,
    Philipp



  • also ich würde dir die c++ fstreams empfehlen!
    da gibt es die eigenschaft ios::app (für append)

    allgemein sieht mir das sehr nach c aus!

    also stelle deine fragen im richtigen subforum( ANSI C oder C++)

    Hier sollten nur C++Builder-spezifische Fragen gestellt werden!



  • Nein, das ist C++, denn wir verwenden auch den Borland C++ 3.1 Compiler.
    Eine andere Möglichkeit würde es nicht geben, fstreams etc. haben wir in der Schule noch nicht durchgemacht ... 😉



  • include<Philipp.h> schrieb:

    Nein, das ist C++, denn wir verwenden auch den Borland C++ 3.1 Compiler.
    Eine andere Möglichkeit würde es nicht geben, fstreams etc. haben wir in der Schule noch nicht durchgemacht ... 😉

    dieser c++ compiler kann auch c...

    und das meiste ist c

    C: FILE *fp
    C++: fstream fp

    C: sprintf
    C++: cout<<



  • Ah .. lol .. gut zu wissen 😃

    Aber um nochmal auf meine Frage zurückzukommen. Gibt es eine Andere Möglichkeit als fstream?? 😕



  • Hallo

    ja gibt es, siehe hier.

    bis bald
    akari



  • Hy

    include<Philipp.h> schrieb:

    Hallo,

    void schreibeInDatei(CD cd, FILE *fp)
    {
    	char s[100];
    	sprintf(s,"%d %s %s %s %f", cd.nr, cd.titel, cd.interpret, cd.genre, cd.preis);
    	fputs(s,fp);
    }
    

    Greetinx,
    Philipp

    ich weiß nicht genau was sprintf/fputs ist da ich nur fprintf kenne.
    und für was du des char-arry brauchts.

    mit fprintf machst du des so

    [cpp]fprintf(fp*,"%d %s %s %s %f \n", cd.nr, cd.titel, cd.interpret, cd.genre,cd.preis);
    fclose(fp*);[cpp]



  • Hy

    mit <fstream.h>
    verwendest du dan halt objekte, deren Klassen schon Standart mässig implementiert ist.

    Ps:

    Wenn du fstream verwendest solltest du Objekt orrientierte Programmierung können.
    Geht zwar auch ohne aber, naja lies meine signatur.

    des wort mit sternen soll st an da rt heißen wird bloß falsch angezeigt



  • MacGyver1929 schrieb:

    Hy

    mit <fstream.h>
    verwendest du dan halt objekte, deren Klassen schon stan**** mässig implementiert ist.

    Ps:

    Wenn du fstream verwendest solltest du Objekt orrientierte Programmierung können.
    Geht zwar auch ohne aber, naja lies meine signatur.

    des wort mit sternen soll st an da rt heißen wird bloß falsch angezeigt

    Hm wenn schon solltest du <fstream> verwenden, das ist der C++-Standard Header.

    Ach und Standard wird bloss falsch geschrieben 😉



  • Hallo

    Der Include sollte korrekterweise so aussehen :

    #include <fstream>
    

    des wort mit sternen soll st an da rt heißen wird bloß falsch angezeigt

    Es wird nicht falsch angezeigt, du schreibst Standard nur falsch.

    /Edit : viel zu langsam

    bis bald
    akari



  • Seid ihr sicher, dass der Borland C++ 3.1 den Standard schon kennt? Dieser Thread würde dann ja eigentlich auch nach "andere Compiler" gehören.


Anmelden zum Antworten