Ho modificato il codice così:
codice:
#include <stdio.h>
#include <ctype.h>

#define MAX_ELE 100

main()
{
 int i,n;
 char v[MAX_ELE];
 printf("\n// Il programma permette di caricare un vettore di caratteri\n// e se l'elemento digitato è gia presente nel vettore\n// verrà chiesto di digitarlo di nuovo.\n\n");
 do {
     printf("numero di elementi(massimo 100): ");
     scanf("%d",&n);
 } while(n<1 || n>MAX_ELE);
 printf("\n");
 fflush(stdin); 
 printf("CARICAMENTO DEL VETTORE\n")
 for(i=0;i<n;i++) {
     short int repeat;
     do {
         repeat=0;
     	 int j;
         printf("inserisci un carattere stampabile: ");
     	 scanf("%c",&v[i]);
         while(getc(stdin)!= '\n');
         for(j=0;j<i && !repeat;j++)
             if (v[i] == v[j]) {
                 printf("l'elemento è già presente, inserire nuovamente un carattere stampabile: ");
                 scanf("%c",&v[i]);
                 repeat=1;
             }      	 
     } while(repeat || isprint(v[i])==0);
 }
}
può andar bene così?