Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: поиск в массиве по формат. строке
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
sergey sva
доброй вечер.

Нужно организовать поиск в массиве символов. Есть девайс который
общается с контроллером по 232, на запросы отвечает и передает данные, данные сохраняются в массиве из 100 байт новые затирают
старые байты. в промежутки времени нужно выбирать из массива
набор символов по шаблону. что типа регулярки. может есть
полезные ссылки.
Код:

arr = "155465634%*145665*% 446666666666666 ";
нужно вытащить то что находится между %* *%
Kitsok
Цитата(sergey sva @ Mar 9 2008, 23:06) *
arr = "155465634%*145665*% 446666666666666 ";
нужно вытащить то что находится между %* *%

libregex?
хотя если формат строки не меняется, я бы на вашем месте сделал бы жестки алгоритм (поискать процент, читать дальше пока не процент опять), регулярные выражения - вещь ресурсоемкая.
DeadMoroz
может Вам поможет функция strtok() - позволяет выделять отдельные токены в строке, но как уже было отмечено, вещь достаточно емкая.
KAlex
Если скорость не критична, то можно strstr.
А лучше самому написать.
sergey sva
Цитата(KAlex @ Mar 10 2008, 11:25) *
Если скорость не критична, то можно strstr.
А лучше самому написать.

Написал свою функцию, так наверно надежней будет.
Темы не хочется плодить, ато еще модераторы ругаться будут smile.gif. еще понял что сколь не учись все равно
все знать не возможно.
пока возился со строками понял что не знаю как прекрутить к строке спец символ, может кто что знает?
Код
SEND_RS232("+++ATE0CR",10);

SEND_RS232("+++ATE0'CR'",10);

SEND_RS232("'+','+','+','A','T','E','0','C','R'",10);

SEND_RS232("+++ATE0\0D",10);

вообщем пробовал по разному. передаются символы а спец символ CR не хотит .
keil ARM компилятор.
aaarrr
SEND_RS232("+++ATE0\r",10);

Код
Escape sequence    Char value    Description

\a                 7             Attention (bell)
\b                 8             Backspace
\t                 9             Horizontal tab
\n                 10            New line (line feed)
\v                 11            Vertical tab
\f                 12            Form feed
\r                 13            Carriage return
\xnn               0xnn          ASCII code in hexadecimal
\nnn               0nnn          ASCII code in octal


Это написано в любом букваре по 'C'.
sergey sva
Цитата(aaarrr @ Mar 10 2008, 15:26) *
SEND_RS232("+++ATE0\r",10);

Код
Escape sequence    Char value    Description

\a                 7             Attention (bell)
\b                 8             Backspace
\t                 9             Horizontal tab
\n                 10            New line (line feed)
\v                 11            Vertical tab
\f                 12            Form feed
\r                 13            Carriage return
\xnn               0xnn          ASCII code in hexadecimal
\nnn               0nnn          ASCII code in octal


Это написано в любом букваре по 'C'.


благодарю. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.