www.samueldiasneto.com: Linguagem C - encerrando seu programa

<<< Voltar  

18. Encerrando seu programa

18.1 return

O comando return(VALOR) encerra uma função retornando VALOR para a função chamadora. Caso a função chamadora seja main() , o programa será encerrado e o valor retornado passado para o sistema operacional. Exemplo:

/* verificando o funcionamento de "return" */

#include <stdio.h>


int soma(int a, int b)
  {
    int resultado;
    resultado = a + b;
    /* "resultado" será passado a função chamadora
     * no caso "printf" */
    return(resultado);
  }


int main()
  {
    int nr1,nr2,valor;

    printf("Entre com o valor do primeiro número :");
    scanf("%d",&nr1);
    printf("Entre com o valor do segundo número :");
    scanf("%d",&nr2);

    /* Chamando a função soma. O comando "return"
     * da função soma retornará "resultado" para
     * aqui. */
    printf("A soma dos dois é %d\n",soma(nr1,nr2));

    printf("Entre com o valor a ser retornado para
	o sistema operacional :");
    scanf("%d",&valor);
    printf("Em ambiente Linux, digite o comando shell\n\n");
    printf("$  echo $?\n\n");
    printf("Para ver o valor retornado pelo programa\n");

    /* "valor" será retornado para o sistema operacional
     * pois este foi a função chamadora de "main" */
    return(valor);
  }

18.2 exit

Ao ser chamado, o comando exit(VALOR) encerra imediatamente o programa e retorna VALOR para o sistema operacional. Exemplo:

/* verificando o funcionamento de "exit" */

#include <stdio.h>


int soma(int a, int b)
  {
    int resultado;
    resultado = a + b;
    /* "exit" encerra o programa imediatamente e retorna
     * "resultado" para o sistema operacional */
    exit(resultado);
  }


int main()
  {
    int nr1,nr2,valor;

    printf("Entre com o valor do primeiro número :");
    scanf("%d",&nr1);
    printf("Entre com o valor do segundo número :");
    scanf("%d",&nr2);

    /* Chamando a função soma. O comando "return"
     * da função soma retornará "resultado" para
     * aqui. */
    printf("A soma dos dois é %d\n",soma(nr1,nr2));

    /* Nada abaixo disto será executado pois o comando "exit"
     * chamado na função "soma" acima encerrará imediatamente
     * o programa e retornará "resultado" para o sistema operacional
     */
    printf("Entre com o valor a ser retornado para
	o sistema operacional :");
    scanf("%d",&valor);
    printf("Em ambiente Linux, digite o comando shell\n\n");
    printf("$  echo $?\n\n");
    printf("Para ver o valor retornado pelo programa\n");

    /* "valor" será retornado para o sistema operacional
     * pois este foi a função chamadora de "main" */
    return(valor);
  }

18.3 abort

Ao encontrar a função abort o programa é imediatamente encerrado e um valor de erro padrão do sistema é retornado para o sistema operacional. Exemplo:

/* verificando o funcionamento de "abort" */

#include <stdio.h>
#include <stdlib.h>

int soma(int a, int b)
  {
    int resultado;
    resultado = a + b;
    /* Ao encontrar "abort" o programa é imediatamente
     * encerrado sendo retornado para o sistema
     * operacional um dos valores de erro padrão
     * do sistema */
    abort();
    exit(resultado);
  }


int main()
  {
    int nr1,nr2,valor;

    printf("Entre com o valor do primeiro número :");
    scanf("%d",&nr1);
    printf("Entre com o valor do segundo número :");
    scanf("%d",&nr2);

    /* Chamando a função soma. O comando "return"
     * da função soma retornará "resultado" para
     * aqui. */
    printf("A soma dos dois é %d\n",soma(nr1,nr2));

    /* Nada abaixo disto será executado pois o comando "exit"
     * chamado na função "soma" acima encerrará imediatamente
     * o programa e retornará "resultado" para o sistema operacional
     */
    printf("Entre com o valor a ser retornado para
	o sistema operacional :");
    scanf("%d",&valor);
    printf("Em ambiente Linux, digite o comando shell\n\n");
    printf("$  echo $?\n\n");
    printf("Para ver o valor retornado pelo programa\n");

    /* "valor" será retornado para o sistema operacional
     * pois este foi a função chamadora de "main" */
    return(valor);
  }

18.4 Definindo funções a serem executadas no encerramento do programa

Para definir funções a serem executadas no encerramento do programa use a função atexit() . Ela faz parte do arquivo de cabeçalho stdlib.h e sua sintaxe é:

atexit(FUNÇÃO)

ela faz com que FUNÇÃO seja chamada quando o programa terminar normalmente, ou seja, com uma chamada a exit() ou com uma chamada a return() a partir de main() . FUNÇÃO não recebe argumentos, assim, caso ela precise acessar dados estes devem ter sido declarados como variávesi globais. Você pode ainda definir mais de uma função a ser chamada com atexit . Neste caso elas serão chamadas na ordem inversa da declaração, ou seja, a última função declarada será a primeira a ser chamada. Caso tudo ocorra bem atexit retorna zero, caso contrário retorna -1. Observe abaixo um exemplo do uso de atexit :

/* utilizando "atexit" */

#include <stdio.h>
#include <stdlib.h>

void primeira()
  {
    printf("Primeira função chamada por atexit\n");
  }

void segunda()
  {
    printf("Segunda função chamada por atexit\n");
  }

void terceira()
  {
    printf("Terceira função chamada por atexit\n");
  }

int main()
  {
    printf("Chamando atexit\n\n");
    atexit(primeira);
    atexit(segunda);
    atexit(terceira);

    return(0);
  }

<<< Voltar