Re[3]: Оцените функцию разбивки строки
От: Андрей Тарасевич Беларусь  
Дата: 18.03.05 22:24
Оценка: 7 (1) +1
Здравствуйте, korzhik, Вы писали:

K>

K>int main()
K>{
K>  TCHAR * path = _T("255-235-166");

K>  TCHAR part1[10];
K>  TCHAR part2[10];
K>  TCHAR part3[10];

K>  int result = _stscanf(path, _T("%[^-]-%[^-]-%[]"), part1, part2, part3);
K>}
K>


И что же, по-твоему, означает последний спецификатор формата в строке формата 'scanf' (подразумевая, что '_stscanf' принимает такие же строки формата)? Вот это — '%[]'.

Согласно спецификации языка, если за '%[' сразу следует ']', то эта ']' считается частью искомого символьного набора, а не завершающей скобкой спецификатора. Т.е. твое '%[]' — это символьный набор из одного символа ']' и без завершающей скобки вообще. Спецификатор некорректен. Поведение не определено. На практике третий аргумент читаться просто не будет.

Если у тебя это работает, то это некорректное повдение используемой тобою стандартной библиотеки.
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.