Здравствуйте, Андрей Тарасевич, Вы писали:
Т>И что же, по-твоему, означает последний спецификатор формата в строке формата 'scanf' (подразумевая, что '_stscanf' принимает такие же строки формата)? Вот это — '%[]'.
Я думал что %[] обозначает — читать всё, включая пробелы в переменную
АТ>Согласно спецификации языка, если за '%[' сразу следует ']', то эта ']' считается частью искомого символьного набора, а не завершающей скобкой спецификатора. Т.е. твое '%[]' — это символьный набор из одного символа ']' и без завершающей скобки вообще. Спецификатор некорректен. Поведение не определено. На практике третий аргумент читаться просто не будет.
Сейчас глянул в стандарт, вы как всегда правы. Я ошибся.
>Если у тебя это работает, то это некорректное повдение используемой тобою стандартной библиотеки.
Согласен
Тогда так:
int result = _stscanf(path, _T("%[^-]-%[^-]-%s"), part1, part2, part3);