Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544

Проблема с "sscanf()"

24.09.2008, 16:21. Показов 3132. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не работает код вида:
C++
1
2
3
4
5
6
7
char *Str, *s1, *s2, *s3;
Str = malloc(50);
s1 = malloc(5);
s2 = malloc(50);
s3 = malloc(5);
Str = "   [   IniSect1  \t  ]  \t  ";
sscanf(Str,"  %[\[]s %[^\]]s %[\]]s",s1,s2,s3);
Работаю в VS2008. Пишу код на чистом "C". Проблема в том, что при использовании в sscanf управляющих строк (в кв. скобках), работает лишь одна такая управляющая строка и возвращается число 1, если нет впереди поля без управляющей строки:
C++
1
2
3
...
sscanf(Str," %s %[^\]]s %[\]]s",s1,s2,s3);
...
возвращает 2 для строки вида " [ IniSect1 ] ". В MSDN на странице "scanf Width Specification" говорится, что символ "]" в поле s2 не войдет и конвертация продолжится начиная с него далее. Т.е. в следующее поле после поля с управляющей строкой что-то должно передаваться, но в s3 строка не пишется почему-то. При этом, если я в первом поле также поставлю управляющую строку, тогда не будут передаваться данные во второе поле. В общем, после первой процедуры работы с управляющей строкой чтение прекращается. Связано ли это с тем, что пытаю код на чистом "С" или еще с чем?

Я пользовал также код вида:
C++
1
sscanf(Str," [ %[^\]]s ] ",s2);
Но при этом, что есть правый брекет, что нет его - функцию все равно завершится с успешным результатом, а мне важно наличие именно обоих брекетов. К тому же, за правым брекетом не должно быть значащих символов. Короче - заголовки ini-файла.

Я эту проблему обощел, конечно, но не пойму почему sscanf не работает.. Может в хелпах не вся инфа либо я не все из инглиша смог прочесть.. ХЗ, кароче..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2008, 16:21
Ответы с готовыми решениями:

Проблема с sscanf();
Я новичок в c++ поэтому не судите строго. Есть у меня такой код: int lvl; char name;...

Ошибка чтения из памяти (sscanf)
sscanf(CBuf,"%le",&Conc); почему такой касяк выползает? по логике же в Conc должно забиться...

sscanf и DynamicArray<T>
Приветствую! Подскажите пожалуйста в чем тут беда? Ошибку выдают последние 2 строки.. ...

1
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
26.09.2008, 12:13  [ТС]
Вот наткнулся на страницу в инете http://www.phanderson.com/C/scanf2.html
Там именно то, с чем я столкнулся. Но там работает, причем также помечено как "С"-код. Я попробую отдельный прожект сбацать, может не в sscanf дело, а у меня в проекте где баг кору грызет моего многострадального мозга

Может кто попробует у себя?

Разобрался позже в чем проблема... Сразу и не заметил, что в приведенном примере после управляющей строки не был поставлен спецификатор "s". В MSDN я этого объяснения не нашел. Толи из-за того, что не так свободно англицкий читаю, толи там об этом в явном виде не говорится.. а говорят, что MSDN пример для подражания в ХелпоТворении
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2008, 12:13
Помогаю со студенческими работами здесь

Непонятное поведение sscanf(.., "%lf", ..)
Здравствуйте все! Столкнулся с такой проблемой: читаю строку из трех вещественных чисел - 18.4,...

Работа sscanf
Мне нужно распарсить файл с такими строками: Element1\tElement2\tElement3\tElement4\tElement5\n...

sscanf заборохлил
имеется 2 программы. в одной является валидной запись line = &quot;v 1,000000 -1,000000...

Как заставить sscanf работать с динамическими массивами?
Как заставить sscanf работать с динамическими массивами или есть этому альтернатива(кроме strtok)?

Неверная работа sscanf
void mul(long long a, int y, int p, char *input) { memset(a, 0, sizeof(int)*11112); char temp;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru