setjmp

#include <setjmp.h>
#include <stdio.h>

jmp_buf envBuf;												//environment buffer

int main(void)
{
int dividend, divisor;

if ( setjmp(envBuf) )
{
puts("Enter a number.");
getchar();
}
printf("Dividend: ");
if (scanf("%d", &dividend) != 1) longjmp(envBuf, 1);

switch ( setjmp(envBuf) )
{
case 0: break;
case 1: puts("Enter a number."); getchar(); break;
case 2: puts("Divided by zero."); break;
default: puts("Unknown error."); break;
}
printf("Divisor: ");
if (scanf("%d", &divisor) != 1) longjmp(envBuf, 1);
if (divisor == 0) longjmp(envBuf, 2);
printf("%d / %d = %d", dividend, divisor, dividend / divisor);

return 0;
}

source

Leave a Reply