Buscar..


Sintaxis

  • #include <errno.h>
  • int errno / * implementación definida * /
  • #include <string.h>
  • char * strerror (int errnum);
  • #include <stdio.h>
  • vacío perror (const char * s);

Observaciones

Tenga en cuenta que errno no es necesariamente una variable, pero que la sintaxis es solo una indicación de cómo podría ser declarada. En muchos sistemas modernos con interfaces de hilo, errno es una macro que se resuelve en un objeto que es local al hilo actual.

errno

Cuando falla una función de biblioteca estándar, a menudo establece errno en el código de error apropiado. El estándar C requiere que se establezcan al menos 3 valores para errno:

Valor Sentido
EDOM Error de dominio
ERANGE Error de rango
EILSEQ Secuencia de caracteres multi-byte ilegal

estridente

Si perror no es lo suficientemente flexible, puede obtener una descripción de error legible por el strerror llamando a strerror desde <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

Para imprimir un mensaje de error legible por el usuario a stderr , llame a perror desde <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;
}

Esto imprimirá un mensaje de error referente al valor actual de errno .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow