Zoeken…


Syntaxis

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

Opmerkingen

Houd er rekening mee dat errno niet noodzakelijkerwijs een variabele is, maar dat de syntaxis slechts een indicatie is hoe deze kan worden verklaard. Op veel moderne systemen met thread-interfaces is errno een macro die wordt omgezet in een object dat lokaal is voor de huidige thread.

errno

Wanneer een standaardbibliotheekfunctie mislukt, wordt errno vaak ingesteld op de juiste foutcode. De C-norm vereist dat er minimaal 3 waarden worden ingesteld voor errno:

Waarde Betekenis
EDOM Domeinfout
ERANGE Bereikfout
EILSEQ Ongeldige reeks van meerdere bytes tekens

strerror

Als perror niet flexibel genoeg is, kunt u een door de gebruiker leesbare foutbeschrijving verkrijgen door strerror aan te roepen van <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

Om een door de gebruiker leesbaar foutbericht naar stderr af te drukken, roept u perror via <stdio.h>.

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;
}

Hiermee wordt een foutbericht afgedrukt met betrekking tot de huidige waarde van errno .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow