Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender errno
  2. Lista de erros
  3. Função perror
  4. tratamento e exibição de mensagens

O controle, validação e exibição de erros em programas escritos utilizando a linguagem C, fica a cargo de quem está programando. Porém, C fornece algumas funções para nos auxiliar na verificação de erros internos das funções que utilizamos.

Para saber qual foi o último erro ocorrido em nossos programas, utilizamos errno que armazena um valor inteiro. O valor de errno é iniciado como 0 e pode ser modificado internamente por qualquer função disponível em C.

Também podemos atribuir nossos próprios números de erros utilizando errno atribuindo valores não utilizados por padrão.

Para utilizarmos errno, mencionado acima, precisamos adicionar sua bibliotecas <errno.h> como pode ser visto na sintaxe abaixo:

Sintaxe
#include <errno.h>

No exemplos abaixo, vamos tentar abrir um arquivo inexistente que fará com que errno tenha seu valor alterado para o valor do erro interno ocorrido na função fopen.

Exemplo 1
#include <stdio.h>
#include <errno.h>

int main ()
{
  FILE *arq = fopen ("arq.xyz", "r"); //errno 2: No such file or directory
  if (arq == NULL)
  {
      printf("errno: %d \n", errno);
  }
  fclose (arq);
  return (0);
}
Saída
errno: 2 

Cada função natica contidas nas bibliotecas nativas da linguagem C irão setar seus valores de erros quando esses ocorrerem.

Fica a cargo do programador verificar quais possíveis erros previamente, realizar os devidos tratamentos, informar os erros de forma amigável ao usuário e encerrar o programa.

Para listarmos os erros disponíveis, basta utilizarmos o comando for e atribuir um intervalo de número de erros entre 0 e 134. A função strerror pertencente a biblioteca nativa string.h será utilizada para auxiliar na impressão.

Sintaxe
char *strerror(int errnum)
Onde
errnum: número do erro
Exemplo 2
#include <stdio.h>
#include  <errno.h>
#include  <string.h> //strerror

void main ()
{
  int i;
  for (i = 0; i < 134; i++)
  {
      errno = i;
      printf("errno: %d %s \n",i,strerror(errno));
  }
}
Saída
errno: 0 Success
errno: 1 Operation not permitted
errno: 2 No such file or directory
errno: 3 No such process
errno: 4 Interrupted system call
errno: 5 Input/output error
(...)

As mensagens de erro acima são totalmente dependentes do compilador e da plataforma utilizados para desenvolvimento.

A função perror imprime uma mensagem de erro na saída de erro padrão(stderr). Para usá-la precisamos adicionar a biblioteca stdio já vista.

Sintaxe
#include &lstdio.h>
Sintaxe
void perror(const char *str);
Onde
*str: mensagem de erro

A saída da função é um string contendo a mensagem do último erro ocorrido prefixada por *str.

Exemplo 3
#include <stdio.h>
#include <errno.h> //errno, perror
int main()
{
  int a = 0;
  if(a == 0)
  {
    errno = 1; //Operation not permitted 
    perror("divisão por zero");
  }
  else
    printf("%d",1/a);
}
Saída
divisão por zero: Operation not permitted
  1. 05/05/2025 - revisão 4 - Adição de perror
  2. 11/03/2025 - revisão 3 - Ajustes em intro
  3. 07/10/2024 - revisão 2 - Ajustes pontuais
  4. 29/09/2023 - revisão 1 - Correção em referências, erros gramaticais e adição de sintaxe para strerror
  5. 19/05/2023 - versão inicial