return von printf() abfragen?



  • Hi,
    Man soll/muss ja von allen verwendeten Funktionen den Rückgabewert überprüfen (wenn er existiert). Doch macht es Sinn das auch bei printf() zu machen???
    Wenn ich das bei jedem printf()-Aufruf machen müsste würden sich Programme ja um einiges vergrößern.

    LG



  • Und was machst du, wenn der Returnwert negativ sein sollte?

    if(printf("Die letzte Ausgabe hat nicht geklappt")<0));
      if(printf("Mist, schon wieder nicht")<0)
        if(printf("Oh nein")<0)
          ...
    

    Im Allgemeinen macht es natürlich schon Sinn, in einigen Fällen ist die Prüfung zwingend erforderlich (fopen etc.), aber bei printf ist dies imo recht sinnlos.



  • Genau das meine ich auch.
    Nur weil das printf() nich funktioniert muss man meist nicht das ganze Programm abbrechen. Deshalb hätte ich den return-Wert einfach ignoriert (zumindest für statusmeldungen).
    Btw, ich hätte es so gemacht:

    if(printf("Die letzte Ausgabe hat nicht geklappt")<0)
        perror("printf");
    


  • Dieses Problem ist in der stdio geschickt gelöst. Es gibt für jeden Filepointer ein Fehlerflag, daß im Fehlerfall gesetzt wird und so lange gesetzt bleibt bis es explizit gelöscht wird:

    printf("Die letzte Ausgabe hat nicht geklappt");
    printf("Mist, schon wieder nicht");
    printf("Oh nein");
    
    if(ferror(stdout))
    {
      perror("stdout");
      clearerr(stdout);
    }
    


  • c-newbie00 schrieb:

    Doch macht es Sinn das auch bei printf() zu machen???

    Das hängt davon ab, wie sehr sich dein Programm auf eine korrekte Ausgabe verlässt (vielleicht wird sie später wieder als Eingabe verwendet). Es gibt sicher Fälle, in denen man irgendwas tun will wenn die Ausgabe nicht geklappt hat. Aber wahrscheinlich ist das eher die Ausnahme.


Anmelden zum Antworten