Что означает «[^ <]» в оценочном выражении sscanf? - PullRequest
0 голосов
/ 24 ноября 2010

Поиск в Google "sscanf reference" или различные другие поисковые термины sscanf приводят множество доступных ссылок относительно функции C sscanf. Многие из этих ссылок содержат пояснения доступных токенов, которые можно использовать в строке формата.

Я просматриваю другой код разработчика (который больше не работает с нашей компанией) и вижу в строке формата, что у него есть несколько токенов, которые выглядят как %15[^<]. Я знаю, что часть %15 токена берет 15 символов из ссылочной строки и сохраняет их в строковом указателе. Что я не могу найти, так это документацию, объясняющую функцию токена [^<].

Я просмотрел несколько справочных страниц и не могу найти ссылку на токен, подобный этому. Может быть, я просто нажимаю на неправильные ссылки, но что это значит? Кроме того, является ли sscanf (и другие функции cstdio со строками форматирования) более надежным, чем это описывается в традиционной документации? Если да, есть ли у кого-нибудь ссылка на более подробную документацию?

Спасибо, ребята.

Ответы [ 3 ]

5 голосов
/ 24 ноября 2010

Ссылка, которую вы должны проверить: стандарт ISO , в частности, раздел 7.19.6.2.

Для вашего конкретного случая это соответствует пятнадцати символам, которые не <.

1 голос
/ 24 ноября 2010

Первая найденная мной ссылка ( здесь ), безусловно, включает ее. Искать на странице [.

Скобки используются, как и в регулярных выражениях, для выражения групп символов, которые соответствуют. Если первый символ - ^, группа инвертируется. Таким образом, [^<] будет соответствовать любому символу, кроме символа «меньше».

0 голосов
/ 24 ноября 2010

Этот токен соответствует всему, кроме "<". Возможно, это какой-то парсер XML или HTML? </p>

Если вы работаете на платформе, отличной от Windows, это возможно в справочной странице для scanf. В противном случае я советую вам установить Cygwin. :)

...