![]() |
|
Модераторы: bsa |
![]()
|
|
| MZ412 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.12.2009 Репутация: нет Всего: нет |
Пытаюсь написать функцию, которая будет парсить конфиг средствами C.
Програмлю плохо, просьба не пинать. Собственно как я это понимаю: Сам конфиг содержит ряд директив вида options = value, например около сотни. Функция получает путь до конфига, проверяет его на читабельность и парсит на предмет наличия значения (value) для предопределённых директив (options). Если директива не определена - ей назначается дефолтное значение. Собственно на perl я бы работал с ассоциативными массивами, просто парся конфиг и выставляя соответствующие значения для заданых ключей. Для си однозначного метода для решения таких задач не нашёл. Подскажите правильный метод реализации данной задачи. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Если программите плохо, то по-простому: сделайте массив структур {ключ;значение} и функцию для поиска значения по ключу. После этого будет как в перле, только медленнее.
Если по-сложному, реализуйте структуру даных ассоциативный массив (через хеширование ключей). И кстати совсем по-простому: нагуглить готовое решение: либо ассоциативного массива, либо вообще парсера конфигов. Это сообщение отредактировал(а) djamshud - 12.1.2010, 13:17 -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 2 Всего: 9 |
А если программишь под виндой, то, наверное, видел ini файлы. Их можно читать стандартным API. Начни поиск с функции GetPrivateProfileString. Не нужно изобретать велосипед для этих целей. Ежели хочешь парсить xml, то можно скачать свободно распространяемый пакет tinyxml. Ежели json, то и для него есть свободные решения с примерами и объяснениями
-------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| MZ412 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.12.2009 Репутация: нет Всего: нет |
Готовый парсер конфигов не очень хочется.
Все реализации ассоциативного массива, что я нашёл, расписаны только под С++. Видимо прийдётся пойти в этом направлении... Забыл уточнить, пишу под фрю. Это сообщение отредактировал(а) MZ412 - 12.1.2010, 13:24 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 2 Всего: 9 |
mes, походу человек хочет труЪ C использовать, без плюсов.
-------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
http://rosettacode.org/wiki/Creating_an_Associative_Array#C
Плюсы конечно захламляют гуглевский выхлоп, но си все же не сложно выискать:). -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| MZ412 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.12.2009 Репутация: нет Всего: нет |
Именно. Не ради блажи. У меня нет ни желания ни причины юзать с++. Разве что конкретно этот модуль написать на чём то ещё. Добавлено через 10 минут и 14 секунд
И снова благодарю. То, что надо! |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |