Чтобы включить дефис в качестве элемента в scanset функции scanf (), должен ли он быть первым или последним символом в списке?

Какой правильный синтаксис спецификатора формата сканирования для scanf(), %[-A-B234abc] или же %[A-B234abc-]? Я не смог найти ответ на StackOverflow, и следующие две ссылки дают противоречивые ответы:

cplusplusreference:
Тире (-), которая не является первым символом, может вызывать непереносимое поведение в некоторых реализациях библиотеки.

Биз:
Чтобы найти дефис, сделайте его последним символом в наборе:% [A-C-].

2

Решение

Согласно n1570 (черновик стандарта C11) и n1256 (черновик стандарта C99),

7.21.6.2 Функция fscanf

[…]
  1. Спецификаторы преобразования и их значения:

        […]

        [[…]                 Если символ — находится в списке сканирования и не является ни первым, ни вторым, где первый символ является символом ^, ни последним символом, поведение определяется реализацией.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]