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

  1. Entender errno
  2. Listar 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, por exemplo.

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 a seguir:

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 2 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 contida na biblioteca nativa da linguagem C irá setar seu valor de erro quando ocorrer.

Fica a cargo do programador verificar previamente quais são os possíveis erros, 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 utilizá-la precisamos adicionar a biblioteca stdio já vista.

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 antecedida 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/09/2025 - revisão 5 - Ajustes: pontuais e sintaxes
  2. 05/05/2025 - revisão 4 - Adição de perror
  3. 11/03/2025 - revisão 3 - Ajustes em intro
  4. 07/10/2024 - revisão 2 - Ajustes pontuais
  5. 29/09/2023 - revisão 1 - Correção em referências, erros gramaticais e adição de sintaxe para strerror
  6. 19/05/2023 - versão inicial