Vamos haber si esto se entiende.
char buffer[50];
scanf("%48[1234]",buffer
);
Ese code me funciona perfecto. Almacenara en buffer 48 caracteres del 1 al 4 ignorando el resto que se teclee.
Pero en vez de eso, quiero leer un caracter permitiendo solo los numeros del 1 al 4 y almacenarlo en un unsigned char.
unsigned char caracter=0;
scanf("%1[1234]",&caracter
)
Este código me corrompe la pila y quiero evitarlo.