Anzeige:
Ergebnis 1 bis 4 von 4

Thema: fehlerstring nach ferror() aufruf

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.04.2005
    Beiträge
    33

    fehlerstring nach ferror() aufruf

    Hallo,

    ich muss ein kleines Hilfsprogramm schreiben, welches unter Linux und Windows funktionieren soll. Ich verwende somit die ANSI/ISO-C I/O funktionen. Um fehler beim aufruf von fread()/fwrite() zu erkennen, muss ich ferror() verwenden.

    Kann ich aus dem Rückgabewert von ferror() einen Fehlerstring, z.B. mit strerror generieren?

    Gruß iluminat23

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Ganz habe ich Deine Frage leider nicht verstanden du meinst:
    Code:
    if(ferror(datei)){
           fprintf(stderr, "%s", strerror(errno));
           return EXIT_FAILURE;
    }
    else{
         return EXIT_SUCESS;
    }
    Geändert von dml (25-11-2010 um 15:21 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.04.2005
    Beiträge
    33
    sowas in die richtung hätte ich gerne. leider setzt ferror sowie fread/fwrite errno nicht:
    Zitat Zitat von man ferror
    These functions should not fail and do not set the external variable errno.
    wenn ein fread/fwrite fehl schlägt würde ich gerne den grund wissen und dem user mitteilen.

    gruß iluminat23

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Code:
    /* grown_file.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    /* Bitte anpassen */
    #define DATEI "datei.txt"
    
    int main(void) {
       FILE *fp;
       int c;
    
       fp = fopen(DATEI, "r");
       if(fp == NULL) {
          fprintf(stderr, "Konnte %s nicht oeffnen\n", DATEI);
          return EXIT_SUCCESS;
       }
       while(1) {   
          while( (c=fgetc(fp)) ) {      /* Zeichenweise einlesen */
             if(c == EOF)         /* Ist es EOF */
                ungetc(c,fp);     /* Letztes Zeichen zurueck */
             else
                fputc(c, stdout); /* Ausgeben */
          }
       }
       /* Wird nie erreicht */
       fclose(fp);
       return EXIT_SUCCESS;
    }
    Quelle: C von A bis Z; Galileo Computing; Jürgen Wolf

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •