Ho provato ad utilizzare setjmp..

codice:
#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<setjmp.h>


int main()
{ 
 char r;
 jmp_buf buf;

  printf("\nCreare una nuova cartella? [s/n]: ");
  setjmp(buf);
  scanf("%c", &r);

  switch(r)
  {
   case 's':
    printf("Creazione della cartella\n");
    break;
   case 'n':
    printf("Ok, fine del programma\n");
    break;
   default:
    printf("\nInput errato, ripetere.. [s/n] :");
    longjmp(buf, 2);
    break;
  }
 exit(0);
 return 0;
}
Con la differenza che l'output per l'eccezzione viene stampato 2 volte...

codice:
Creare una nuova cartella? [s/n]: a  /*input errato...*/
/*il messaggio d'eccezzione viene visualizzato 2 volte..*/
Input errato, ripetere.. [s/n] :
Input errato, ripetere.. [s/n] :s        
Creazione della cartella                 /*output corretto.*/
Aiuto!!!!!