scan中的scanset行为

我试图在scanf中使用scanset做一些事情但是卡在某处。

我写的时候

char s1[250]; scanf("%[AZ]s",s1); input : AHJHkiuy Output: AHJH 

有了这个,

 scanf("%[^\n]s",s1); input: abcd ABCD hie output: abcd ABCD hie /*that is reading white space also (till \n) */ 

现在我的问题是,如果我提供输入:

 ABCDahaj ahajABCD ajak12347ab 

并希望输出为:

 ABCDahaj ahajABCD ajak 

那么格式字符串应该如何写? 也就是说,如何使用这个扫描设备?

您可以稍微扩展您的示例并实现您的目标。

 scanf("%[A-Za-z ]", s1); 

另一种方法是:

 scanf("%[^0-9]", s1); /* Scans everything until a digit */