scanf()
, %[-A-B234abc]
或%[A-B234abc-]
的正确扫描集格式说明符语法是什么?我在StackOverflow上找不到答案,下面两个链接给出了相互矛盾的答案:
cplusplusreference:不是第一个字符的破折号(-)可能在某些库实现中产生不可移植的行为。
beez:要匹配连字符,请将其设置为集合中的最后一个字符:%[a - c -]。
根据n1570 (C11标准草案)和n1256 (C99标准草案),
7.21.6.2 fscanf函数[…]
- 转换说明符及其含义为:
[...]
[…]]
如果-字符在扫描列表中,并且不是第一个字符,也不是第二个字符(其中第一个字符是^),也不是最后一个字符,则该行为是实现定义的。