In Textdatei schreiben??



  • Hallo, möchte gerne in eine text datei schreiben und den neuen string immer in
    einer neuen Zeile anhängen!!
    so ungefähr::

    hallo
    wie
    geht usw

    Habe schon folgendes geschrieben:

    void schreiben(char a[],char b[])
    {

    FILE *file;
    file = fopen("test.txt","at");
    fputs(a,file);
    fputs(b,file);
    fclose(file);
    }

    thx für eure antworten asterix



  • kannst ja einfach einen einzigen string übergeben und leerzeichen durch zeilenvorschübe ersetzen, sofern ich dich richtig verstanden habe.



  • Einen Zeilenumbruch erzeugst du durch die Ausgabe von '\n' (bzw \r\n oder \r, je nach OS afaik). Sinvoller waere es, wie Herr-Vorragend schon anmerkte, nur einen Parameter zu übergeben. Das koennte dann so aussehen:

    void schreiben(char const* const a) 
    { 
    	FILE* file; 
    	file = ::fopen("test.txt","at"); 
    	::fputs(&a[0], file); 
    	::fclose(file); 
    }
    
    int main()
    {
    	schreiben("Erste Zeile");
    	schreiben("\nZweite Zeile"); // man beachte das \n am Anfang :), du kannst es aber auch seperat ausgeben oder sogar mit
    //einem Aufruf der schreiben Funktion (schreiben("Erste Zeile\nZweite Zeile");)
    	return 0;
    }
    

    Falls das dein Problem war^^

    Gruss,
    DeSoVoDaMu



  • @DeSoVoDaMu Heißer Typ hier ist ANSI C

    Die Funktion könnt so aussehen

    void schreiben(char *a,char *b)  // tut nichts zur sache ist die üblichere Schreibweise
    {
    FILE *file;
    file = fopen("test.txt","at");  // Fehlerhandling fehlt was machste wenn das file sich nicht öffnen läßt
    fprintf(file,"%s\n",a);  // Schreibt den ersten String in das file und fügt wegen des "at" ein CR LF an
    fprintf(file,"%s\n",b);  // Schreibt den zweiten String in das file und fügt wegen des "at" ein CR LF an
    fclose(file);
    }
    

    Die Beschreibung der fprintf´s findest du in der Hilfe oder im Handbuch



  • @DeSoVoDaMu Heißer Typ...

    lol 😉

    ...hier ist ANSI C

    Nur so Interesse halber: gehoert der Scope Operator nicht zu C ? OK, ich wuesste jetzt auch nicht, wo der Anwendung finden sollte, aber neu waere es mit trotzdem 😃
    Habe mir das irgendwie so angewoehnt, sry 🙂

    Oder wo genau ist das Problem? fputs ist doch Standard 😕

    Gruss,
    DeSoVoDaMu

    EDIT2: verschrieben



  • Meines wissens nicht.
    Versuch mal deinen Compiler so einzustellen das er nur C-Code akzeptiert dann sollte '::' zu einer Fehlermeldung führen.



  • Scheinst Recht zu haben. Aber jetzt stellt sich mir eine neue Frage:
    includiert man, wenn man rein C programmiert nicht auch die neuen Header der Form <c...> anstatt der alten Header der Form <....h> ? (also bsp. cstdio statt stdio.h)

    Die Frage stellt sich mir deswegen, weil cstdio bei mir so beginnt:

    using ::size_t; using ::fpos_t; using ::FILE;
    using ::clearerr; using ::fclose; using ::feof;
    .
    .
    .
    

    Und damit kommen in einem C-Projekt ein Haufen Fehler.
    Ich programmiere eigentlich kein (reines) C, darum mag die Frage vllt dumm sein, aber interessieren tut es mich trotzdem 😉

    Gruss,
    DeSoVoDaMu



  • Fragen die auf reinem Unwissen beruhen können nicht dumm sein

    In C werden die "alten" Header mit ".h" benutzt
    in C++ sollten die "neuen" C++ Header ohne "
    .h" benutzt werden.

    Ich programmiere auch keine reines C mehr, bei mir gehts anders rum. Komme von C gehe teilweise in Richtung C++


Anmelden zum Antworten