il primo :
char t;
non e' una stringa... e' un carattere...

scanf("%c", &t);

pero' se usi gets(t);
non dovrebbe darti errore ma va' a scrivere in area di memoria che non ti appartengono...In Poche Parole... e' un errore pericoloso...