fputs??



  • Ich habe zwei kurze Fragen zu fputs!

    1. Wird die Zeile die man einfügen möchte oder auch mehrere erst in die Datei geschrieben wenn die Datei geschlossen wird???
      Kommt mir nämlich so vor!

    2. Wie kann ich einen Formartierten Text mit fputs ausgeben!
      Ich möchte sowas in der art machen.....

    fputs("Fehler in Zeile %d!",&ftell(Datei),FehlerLog);
    

    Aber das erkennt er nicht wirklich, ich glaube er denkt jetzt das der String in
    &ftell(Datei) geschrieben werden soll!



  • 1. Ich weiß nicht so genau, wann die Daten in die Datei geschrieben werden.
    Aber spätestens, wenn die Datei geschlossen wird.
    Du kannst aber mit fflush() das frühere Schreiben erzwingen.

    2. Nimm fprintf().

    Gruß mcr



  • Thes-One schrieb:

    1. Wird die Zeile die man einfügen möchte oder auch mehrere erst in die Datei geschrieben wenn die Datei geschlossen wird???
      Kommt mir nämlich so vor!

    Wann genau geschrieben wird, ist systemabhängig - die Ausgabefunktionen verwenden noch einen Zwischenpuffer, in den alle Daten gepackt werden, um sie später am Stück auf Platte zu schreiben (einmal 1KB zu schreiben geht schneller als tausend Mal 1 Byte). Echt geschrieben werden die Daten, wenn der Zwischenspeicher voll ist, die Datei geschlossen wird oder du mit fflush() anweist, sofort zu schreiben.

    1. Wie kann ich einen Formartierten Text mit fputs ausgeben!
      Ich möchte sowas in der art machen.....

    Mit fputs() gar nicht - dafür gibt es fprintf().



  • Thes-One schrieb:

    fputs("Fehler in Zeile %d!",&ftell(Datei),FehlerLog);
    

    der adressoperator ist aus versehen da, oder?
    🙂



  • Thes-One schrieb:

    fputs("Fehler in Zeile %d!",&ftell(Datei),FehlerLog);
    

    weißt du, was dein Problem ist? Du liest nie die Dokumentation einer Funktion sondern tippst das, was du denkst, es könnte gehen. Schon mal man: fputs(3) durchgelesen? Dann wäre dir aufgefallen, dass fputs so deklariert ist:

    int fputs(const char *s, FILE *stream);
    

    wo siehst du da die Möglichkeit eines dritten Parameters? Seit wann liefert man: ftell(3) ein FILE bzw. FILE* zurück? Erst lesen, dann schreiben, also man: fprintf(3)


Anmelden zum Antworten