Перейти к содержанию
    

парсер текстового конфигурационного файла c SMS

Пожалуйста подскажите библиотеку, занимающую минимум памяти, на которой можно сделать и парсер текстового конфигурационного файла, и проверку валидности при настройке этой конфигурации построчно через SMS. В настройках будут не только строки и числа, но и URL, IP адреса, сотовые номера.

В итоге должна быть возможность залить конфигурацию одним файлом, либо настроить через SMS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, firew0rker сказал:

парсер текстового конфигурационного файла

Думаю, что парсер подобного:

[IPADDR] = 172.100.16.12

[NETMASK] = 255.255.255.0

и т.п. сможет написать сам даже тот, кто знаком с функциями strcmp, atoi...  И прослушал пол-года курс по программированию на Си...

 

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, firew0rker сказал:

Пожалуйста подскажите библиотеку, занимающую минимум памяти, на которой можно сделать и парсер текстового конфигурационного файла

GetPrivateProfileString(): https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofilestring

WritePrivateProfileString(): https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa

и иже с ними из того же API по работе с локальными .ini-файлами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Harvester, благодарю.

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

А для проверки валидности URL, IP адресов, сотовых номеров что посоветуете?

jcxz, на GSM модуле нет винды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, firew0rker said:

А для проверки валидности URL, IP адресов, сотовых номеров что посоветуете?

Я бы свой валидатор написал.
Если хотите по-взрослому, то любую реализацию RegEx, например (не пользовался, просто гугл нашел) https://github.com/kokke/tiny-regex-c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

tiny-regex-c нравится размер, вот описание поддерживаемых выражений:

Spoiler

 *   '.'        Dot, matches any character
 *   '^'        Start anchor, matches beginning of string
 *   '$'        End anchor, matches end of string
 *   '*'        Asterisk, match zero or more (greedy)
 *   '+'        Plus, match one or more (greedy)
 *   '?'        Question, match zero or one (non-greedy)
 *   '[abc]'    Character class, match if one of {'a', 'b', 'c'}
 *   '[^abc]'   Inverted class, match if NOT one of {'a', 'b', 'c'} -- NOTE: feature is currently broken!
 *   '[a-zA-Z]' Character ranges, the character set of the ranges { a-z | A-Z }
 *   '\s'       Whitespace, \t \f \r \n \v and spaces
 *   '\S'       Non-whitespace
 *   '\w'       Alphanumeric, [a-zA-Z0-9_]
 *   '\W'       Non-alphanumeric
 *   '\d'       Digits, [0-9]
 *   '\D'       Non-digits

чего-то не хватает... Количества {повторов}

Без них так:

Spoiler

$ ./test_print2 "^[\+\d]\d+$" +79538012345
type: BEGIN
type: CHAR_CLASS [\+\d]
type: DIGIT
type: PLUS
type: END
pattern '^[\+\d]\d+$' matched '+79538012345', matched 12 chars.
$ ./test_print2 "^[\+\d]\d+$" +7953
type: BEGIN
type: CHAR_CLASS [\+\d]
type: DIGIT
type: PLUS
type: END
pattern '^[\+\d]\d+$' matched '+7953', matched 5 chars.

Короткий телефон - тоже телефон.


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/26/2021 at 6:25 PM, firew0rker said:

чего-то не хватает... Количества {повторов}

Ну так добавьте! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/26/2021 at 11:25 PM, firew0rker said:

чего-то не хватает... Количества {повторов}

Для выражений с заранее известным количеством повторов:

Ровно три цифры \d{3} = \d\d\d(?=\D)

Три и более цифр \d{3,} = \d\d\d+

Не более трёх цифр \d{,3} = \d?\d?\d?(?=\D)

От трёх до пяти цифр \d{3,5} = \d\d\d\d?\d?(?=\D)

Не подходит для случая, если {m,n} - переменные, которые вычисляются в runtime. (поддерживается ли такое вообще?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...