Per la gestione degli errore si possono usare le funzioni assert(), contenuta nel file di libreria assert.h, e perror(), contenuta nel file di libreria errno.h.

Per quanto riguarda assert() il suo prototipo è:
void assert( int espressione);
Mentre per quanto riguarda perror() il prototipo è:
void perror( char *msg );
Eccoti due esempi di impieghi delle due funzioni:

.........
int x;
printf("Inserire valore intero: ");
scanf("%d", &x);

assert( x >= 0 );

printf("\nHai inserito %d", x);
return 0;
...........

FILE *fp;
char filename[60];

puts("Inserisci nome o percorso del file: ");
gets(filename);

if(( fp = fopen (filename, "r")) == NULL)
{
perror("Errore!:");
printf("errno: %d", errno);
getchar();
}

else
{
printf("FIle aperto in lettura");
fclose(fp);
}

return 0;

CIAO