要将连字符作为元素包含在scanf()的scanset中,它应为列表中的第一个字符还是最后一个字符?

Thokchom

这是正确的扫描集语法格式说明符scanf()%[-A-B234abc]%[A-B234abc-]我在StackOverflow上找不到答案,以下两个链接给出了矛盾的答案:

cplusplusreference: 在某些库实现中,不是第一个字符的破折号(-)可能会产生不可移植的行为。

beez: 要匹配连字符,请使其成为集合中的最后一个字符:%[AC-]。

斯皮卡特里克斯

根据n1570(C11标准草案)和n1256(C99标准草案),

7.21.6.2 fscanf函数

[...]

  1. 转换说明符及其含义是:

        [...]

        [[...]
                如果-字符位于扫描列表中,并且不是第一个字符,也不是第二个字符(第一个字符是^或最后一个字符),则该行为是实现定义的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档