Recherche…


Syntaxe

  • #include <errno.h>
  • int errno; / * implémentation définie * /
  • #include <string.h>
  • char * strerror (int errnum);
  • #include <stdio.h>
  • perid vide (const char * s);

Remarques

N'oubliez pas que errno n'est pas nécessairement une variable, mais que la syntaxe n'est qu'une indication de la manière dont elle pourrait être déclarée. Dans de nombreux systèmes modernes avec des interfaces de threads, errno est une macro qui se résout en un objet local au thread actuel.

errno

Lorsqu'une fonction de bibliothèque standard échoue, elle définit souvent errno avec le code d'erreur approprié. Le standard C nécessite au moins 3 valeurs pour errno:

Valeur Sens
EDOM Erreur de domaine
ERANGE Erreur de portée
EILSEQ Séquence de caractères multi-octets illégale

strerror

Si perror n'est pas assez flexible, vous pouvez obtenir une description d'erreur lisible par l'utilisateur en appelant strerror partir de <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

Pour imprimer un message d'erreur lisible par l'utilisateur sur stderr , appelez perror depuis <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;
}

Cela affichera un message d'erreur concernant la valeur actuelle de errno .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow