扫描集的行为在scanf用C(Scanset behaviour in scanf in C)

2019-07-30 14:40发布

我试着做一些东西与扫描集在scanf但地方卡住了。

当我写

char s1[250];
scanf("%[A-Z]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

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

Answer 1:

你可以扩大你的例子一点点实现自己的目标。

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


Answer 2:

另一种方式做,这将是:

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


Answer 3:

  1. 单字符输入字符串:scanf函数(“%S”,STR); //正常的字符串输入的scanf(“%[α]的”,STR); //使用扫描集上面的语句中提到,将输入字符串由具有其值作为“一”或“AAA”或等等..(区分 - 敏感)。
  2. 提供了一个字符范围:在“ - ”符号用来表示字符集合。 的scanf(“%[0-9]的”,STR); //使用扫描集上面的语句中提到的是,输入字符串具有“0”之间它的值至“9”。 任何其他组合会被忽略。
  3. 排除一个字符:克拉或抑扬符号(^)用于排除来自输入的符号。 的scanf(“%[^ A]的”,STR); //使用扫描集上面的语句中提到的是,输入字符串可以具有除了“A”(区分 - 敏感)的任何字符。
  4. 以单行输入与扫描集:scanf函数(“%[^ \ n]的的”,STR); //使用扫描集此语句获取输入直到字符在输入发生一个新行(“\ n”)。
  5. 以多 - 线路输入:这是上面提到的第三使用的利用。 假设你想采取输入字的段落或组。 一个正常的scanf函数将只扫描的第一个字但是,通过使用扫描集,我们可以为段落提供输入和存储为一个完整的字符串。 我们必须假设休息 - 点段落,在这种情况下是一个“+”号,并采取输入。 的scanf(“%[^ +]的”,STR); //使用扫描集


文章来源: Scanset behaviour in scanf in C
标签: c scanf