1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Fehlercodes bei Dateizugriff/Lesen/Schreiben in C

Dieses Thema im Forum "C/C++" wurde erstellt von neuesich, 29. April 2012.

  1. neuesich

    neuesich Grünschnabel

    Hallo,

    Ich habe mich gefragt, ob es in C mit "Hausmitteln" möglich ist bestimmte Fehlerfälle beim Öffnen/Lesen/Schreiben von Dateien zu unterscheiden.
    Ich meine so etwas wie:

    1) Öffnen: Datei nicht vorhanden/Keine (Zugriffs-)Rechte
    2) Lesen: Keine (Lese-)Rechte/ Wird von anderen Prozess genutzt
    3) Schreiben: Datei nicht (mehr) vorhanden (Netzwerklaufwerk/USB-Verbindung unterbrochen etc). / Keine (Schreib-)Rechte bzw. schreibgeschützt / Kein Speicherplatz mehr zur Verfügung / Speicherpfad nicht mehr vorhanden

    usw usw.

    z.B. Gibt fopen (so weit ich weiß) beim fehlgeschlagenen Öffnen einer Datei nur einen Pointer auf NULL zurück, oder gibt es andere Möglichkeiten?

    Ich bedanke mich im Voraus!
    Lg
  2. Padawan

    Padawan Erfahrenes Mitglied

  3. neuesich

    neuesich Grünschnabel

    Danke für den Tipp, aber so weit ich das sehen kann wird nur unterschieden zwischen geglücktem Öffnen und fehlgeschlagenem Öffnen.

    Code (Text):
    1. exit(EXIT_FAILURE);
    hilft mir nicht weiter. Wird zwar nicht auf der Seite erklärt, aber wenn ich das richtig gegoogelt habe, dann schließt das ja das komplette Programm (was ich nicht beabsichtige).

    Der letzte Teil der Seite ist interessant. freopen werde ich wohl nicht brauchen, aber anscheinend sind auftretende Fehler im Stream stderr hinterlegt. Wie kann ich am besten darauf zugreifen? Die Ausgabe von stderr zeigt sicherlich nur einen englischen Text, oder? Ist es möglich eine Art Fehlercode zu erhalten?

    lg
  4. sheel

    sheel Mod # I love Asm Moderator

  5. ibafluss

    ibafluss Erfahrenes Mitglied

    Und stderr gibt jetzt nicht automatisch Fehlermeldungen aus, das ist dasselbe wie stdout, nur ist es für Fehlermeldungen gedacht, die du als Programmierer ausgeben möchtest. Automatisch vom System bekommst du keine Fehlerausgabe. Für solche Fälle gibt es, wie von sheel schon gesagt, errno.
    Lg
  6. deepthroat

    deepthroat Premium-User

    Hi.

    Und einen entsprechenden Fehlertext kannst du mit perror ausgeben lassen. Oder du nutzt strerror um die Fehlermeldung in einen String zu kopieren.

    Gruß
  7. neuesich

    neuesich Grünschnabel

    perror war genau das was ich gesucht habe! danke für's bessere verständnis ;)

Diese Seite empfehlen