6.19.8 atexit Function

Registers the specified function to be called when the program terminates normally.

Include

<stdlib.h>

Prototype

int atexit(void(*func)(void));

Argument

func
the function to be called on exit

Return Value

Returns a zero if successful; otherwise, returns a non-zero value.

Remarks

For the registered functions to be called, the program must terminate with a call to the exit function.

When using the MPLAB XC8 for PIC, a limit of 32 function handlers applies.

Example

See the notes at the beginning of this chapter or section for information on using printf() or scanf() (and other functions reading and writing the stdin or stdout streams) in the example code.

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

void good_msg(void);
void bad_msg(void);
void end_msg(void);

int main(void)
{
  int number;

  atexit(end_msg);
  printf("Enter your favorite number:");
  scanf("%d", &number);
  printf(" %d\n", number);
  if (number == 5)
  {
    printf("Good Choice\n");
    atexit(good_msg);
    exit(0);
  }
  else
  {
    printf("%d!?\n", number);
    atexit(bad_msg);
    exit(0);
  }
}

void good_msg(void)
{
  printf("That's an excellent number\n");
}

void bad_msg(void)
{
  printf("That's an awful number\n");
}

void end_msg(void)
{
  printf("Now go count something\n");
}

Example Input 1

With contents of UartIn.txt (used as stdin input for simulator):

5

Example Output 1

Enter your favorite number: 5
Good Choice
That's an excellent number
Now go count something

Example Input 2

With contents of UartIn.txt (used as stdin input for simulator):

42

Example Output 2

Enter your favorite number: 42
42!?
That's an awful number
Now go count something