Suche…


Syntax

  • #include <errno.h>
  • int errno; / * Implementierung definiert * /
  • #include <string.h>
  • char * strerror (int errnum);
  • #include <stdio.h>
  • void perror (const Zeichen * s);

Bemerkungen

errno dass errno nicht unbedingt eine Variable ist, sondern dass die Syntax nur ein Hinweis darauf ist, wie sie deklariert werden könnte . Auf vielen modernen Systemen mit Thread-Schnittstellen ist errno ein Makro, das sich in ein Objekt auflöst, das lokal für den aktuellen Thread ist.

errno

Wenn eine Standardbibliotheksfunktion fehlschlägt, wird für errno häufig der entsprechende Fehlercode festgelegt. Der C-Standard erfordert, dass mindestens 3 Werte für das Errno eingestellt werden:

Wert Bedeutung
EDOM Domänenfehler
ERANGE Bereichsfehler
EILSEQ Unzulässige Multi-Byte-Zeichenfolge

Strerror

Wenn perror nicht flexibel genug ist, erhalten Sie eine vom Benutzer lesbare Fehlerbeschreibung, indem Sie strerror von <string.h> .

int main(int argc, char *argv[])
{
    FILE *fout;
    int last_error = 0;

    if ((fout = fopen(argv[1], "w")) == NULL) {
        last_error = errno;
         /* reset errno and continue */
         errno = 0;
    }

    /* do some processing and try opening the file differently, then */


    if (last_error) {
        fprintf(stderr, "fopen: Could not open %s for writing: %s", 
                argv[1], strerror(last_error));
        fputs("Cross fingers and continue", stderr);
    }

    /* do some other processing */

    return EXIT_SUCCESS;
}

perror

Rufen Sie perror aus <stdio.h> auf, um eine vom Benutzer lesbare Fehlermeldung an stderr perror .

int main(int argc, char *argv[])
{
   FILE *fout;

   if ((fout = fopen(argv[1], "w")) == NULL) {
      perror("fopen: Could not open file for writing");
      return EXIT_FAILURE;
   }
return EXIT_SUCCESS;
}

Dadurch wird eine Fehlermeldung zum aktuellen Wert von errno .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow