Comportamiento de scanset en scanf en C

Intenté hacer algunas cosas con scanset en scanf pero me quedé atascado en algún lugar.

cuando yo escribo

char s1[250];
scanf("%[A-Z]s",s1);

input : AHJHkiuy
Output: AHJH

y con esto,

scanf("%[^\n]s",s1);

input: abcd ABCD hie
output: abcd ABCD hie       /*that is reading white space also (till \n) */

Ahora mi pregunta es, si doy entrada como:

ABCDahaj ahajABCD ajak12347ab

y quiere la salida como:

ABCDahaj ahajABCD ajak

Entonces, ¿cómo se debe escribir la cadena de formato? Es decir, ¿cómo se debe utilizar este escáner?

Respuestas a la pregunta(3)

Su respuesta a la pregunta