Какой правильный синтаксис спецификатора формата сканирования для scanf()
, %[-A-B234abc]
или же %[A-B234abc-]
? Я не смог найти ответ на StackOverflow, и следующие две ссылки дают противоречивые ответы:
cplusplusreference:
Тире (-), которая не является первым символом, может вызывать непереносимое поведение в некоторых реализациях библиотеки.
Биз:
Чтобы найти дефис, сделайте его последним символом в наборе:% [A-C-].
Согласно n1570 (черновик стандарта C11) и n1256 (черновик стандарта C99),
7.21.6.2 Функция fscanf
[…]
- Спецификаторы преобразования и их значения:
[…]
[[…] Если символ — находится в списке сканирования и не является ни первым, ни вторым, где первый символ является символом ^, ни последним символом, поведение определяется реализацией.
Других решений пока нет …