Comportamento Scanset em scanf em C

Eu tentei fazer algumas coisas com scanset no scanf, mas preso em algum lugar.

quando eu escrevo

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

input : AHJHkiuy
Output: AHJH

e com isso,

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

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

Agora minha pergunta é, se eu der entrada como:

ABCDahaj ahajABCD ajak12347ab

e quer a saída como:

ABCDahaj ahajABCD ajak

então, como a string de formato deve ser escrita? Ou seja, como essa varredura deve ser usada?

questionAnswers(3)

yourAnswerToTheQuestion