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