Официальное определение формата строки sscanf ()? - PullRequest
0 голосов
/ 23 февраля 2011

Я реализую свою собственную версию sscanf() на другом языке (не C или C ++).

Я в основном закончил. Я просто пытаюсь закончить некоторые тончайшие детали значения строки формата. Однако при поиске в Интернете я обнаружил, что не вся документация для sscanf() одинакова.

Например, некоторые говорят, что %i обрабатывают восьмеричные и шестнадцатеричные, в то время как другие даже не включают этот тип формата. И некоторые обсуждают %[, а другие нет. Кроме того, некоторые детали, похоже, просто опущены.

Какая самая авторитетная документация о том, как именно должна интерпретироваться строка формата?

Я не фанатичен в отношении соблюдения стандарта. Но я хотел бы быть максимально совместимым с любыми существующими строками формата.

EDIT

Если кому-то интересно, я опубликовал мою C # реализацию sscanf () кода онлайн.

Ответы [ 5 ]

4 голосов
/ 23 февраля 2011

Весь смысл стандарта (или большей части в любом случае) состоит в том, чтобы дать ответы на подобные вопросы, поэтому (по крайней мере, мне) кажется, что копия стандарта была бы очевидной ссылкой.Чтобы сэкономить немного денег по сравнению с реальным стандартом, вы можете довольно легко перейти с черновика стандарта вместо этого.

2 голосов
/ 23 февраля 2011

См. ISO / IEC 9899: 1999, 7.19.6.2 (fscanf) - это последний стандарт C

1 голос
/ 24 февраля 2011

В дополнение к стандарту C существует также стандарт POSIX, который определяет sscanf. Это бесплатно, на http://www.unix.org/version3/. Как обычно с POSIX, он совместим вверх.

1 голос
/ 23 февраля 2011

В то время как вам необходимо приобрести стандарты ISO, последний проект ISO / IEC 9899: TC2 (ISO C99), который практически идентичен, находится в свободном доступе. Вот например: www.open-std.org / jtc1 / sc22 / wg14 / www / docs / n1124.pdf . Функция sscanf определена в разделе 7.19.6.7. Однако все подробности спецификатора формата приведены в описании fscanf в 7.19.6.2.

1 голос
/ 23 февраля 2011

Ну, вам нужно решить, что вы реализуете. Вы можете следовать одному из стандартов C или C ++ или некоторому расширению, специфичному для платформы (POSIX, GNU, MSVC).

Если вы решили следовать одному из стандартов, просто изучите его и следуйте спецификациям. Для работы с платформой вам необходимо следовать документации конкретной платформы.

...