|
|
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, связался с контроллером Arduino где программирование идет на C и никак не могу понять как организовать нарезку текста, да и к тому же тип данных у меня char, а как его нормально преобразовать в String я еще не нашел. Формат информационных сообщений может быть разный, но мне нужно обрабатывать по шаблону: /r +CMT: (любые символы)/r команда+команда+команда/r На каком-нибудь JS у меня получилось бы так: Кодtext=" +CMT: "+79643437397","","15/06/09,17:34:01+12" 1+ON+60 "; aa = text.split("\r\n"); if (aa.length==3) { bb = aa[1].split("+"); // обработка команды } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 17:44 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Как организовать такой код только на C с учетом того что тип данных у переменной text будет char? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 17:45 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Generalproger, если нужно именно С, и регвыражения в общем, рекомендую библиотеку (lib)pcre. конкретно в этом случае конечно же можно обойтись вообще без рег. выражений. бежишь по строке и в массив складываешь координаты начала и конца строки в массиве, потом кусками обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 20:02 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Generalproger, Есть такая функция : strtok() - можно поиспользовать ее. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 20:21 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
DarkMaster, А не подскажете где скачать malloc.h, в моей среде разработки он отсутствует.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 22:52 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Сунул вот эту ( http://gee.cs.oswego.edu/pub/misc/malloc.h ) malloc.h в итоге ошибка: 27 char *oldstr = malloc(sizeof(str)); Blink:27: error: invalid conversion from 'void*' to 'char*' [-fpermissive] invalid conversion from 'void*' to 'char*' [-fpermissive] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 23:01 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
GeneralprogerDarkMaster, Сунул вот эту ( http://gee.cs.oswego.edu/pub/misc/malloc.h ) malloc.h в итоге ошибка: 27 char *oldstr = malloc(sizeof(str)); Blink:27: error: invalid conversion from 'void*' to 'char*' [-fpermissive] invalid conversion from 'void*' to 'char*' [-fpermissive] http://ideone.com/KXTl90 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 23:10 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Generalproger, Ты хоть среду назови... Кстати, ты случаем не под микропроцессоры это пишешь (там может быть, что придется еще и malloc() и strtok() самому реализовывать)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 23:42 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Generalprogerсвязался с контроллером Arduino Сайт_производителяThe ATmega328 chip found on the Uno has the following amounts of memory: Flash 32k bytes (of which .5k is used for the bootloader) SRAM 2k bytes EEPROM 1k byte The ATmega2560 in the Mega2560 has larger memory space : Flash 256k bytes (of which 8k is used for the bootloader) SRAM 8k bytes EEPROM 4k byte Почему-то я не удивлен, что при 2K оперативки они не стали Heap реализовывать ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 00:43 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
жесть_жесть_жесть, Н-да, вот что значит по диагонали читать - про микроконтроллер я как-то упустил.... Тогда может ну его этот ихний обрубанный С нафиг и все на асме сделать? А то на реализацию рантайма можно кучу времени потратить... 2ТС - а по-конкретнее задачу можно обрисовать? Зачем тебе строку "сплитить" нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 02:07 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
GeneralprogerЗдравствуйте, связался с контроллером Arduino где программирование идет на C...взаимодействие с Arduino можно построить не только на C, но и на С++, С#, PERL и Python. http://robocraft.ru/blog/arduino/76.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 06:38 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
На DevCon один из докладчиков показывал устройство на базе Arduino для налива пива. И управлял этим устройством из Cordova (PhoneGap) приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 06:46 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
DarkMasterGeneralproger, Ты хоть среду назови... Кстати, ты случаем не под микропроцессоры это пишешь (там может быть, что придется еще и malloc() и strtok() самому реализовывать)? так пусть не запоминает старую строку и не надо будет malloc free ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 08:09 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ааааааа, ну массив указателей на куски, нарезанные до ифа, длиной 10(может 20) завести ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 08:11 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
GeneralprogerDarkMaster, Сунул вот эту ( http://gee.cs.oswego.edu/pub/misc/malloc.h ) malloc.h в итоге ошибка: 27 char *oldstr = malloc(sizeof(str)); Blink:27: error: invalid conversion from 'void*' to 'char*' [-fpermissive] invalid conversion from 'void*' to 'char*' [-fpermissive] Вася Уткин char *oldstr = (char *) malloc(sizeof(str)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 08:23 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
tchingiz, Спасибо, здесь теперь все ясно, осталась еще одна проморочка - сами данные я получаю из Serial.read(); Это как я понял нечто подобное InputStream в Java, надо как-то объединять их, не понимаю как, += и .concat не помогают: Внутри циклаif(SIM900.available() > 0){ Serial.print(SIM900.read()); } Как я понял при получении нового байта текущий вариант выписывает его в консоль, попытался завести константу char otp = 0; и попробывать добавлять к ней новые байты char otp+= SIM900.read(); Похоже тут нужны какие-то типы более хитрые, попробывал: char otp[] = {0}; ... otp.concat(SIM900.read()) тоже что-то не то получается, короче говоря задумка в следующем: буду набирать строку до переноса строки и дальше проверять является ли она командой отосланной в СМС. Только как организовать склеивание строк не пойму? Да и заранее еще вопрос - если строка будет набираться не с типом char name[] ... то как мне её потом всунуть в кусок кода где strkok? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 12:26 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Во всем по проблеме работы с char разобрался, тему можно закрывать , всем кто помог - огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:53 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
Generalproger Может быть сначала хоть книжку по C прочитать? Хотя бы бегло. По диагонали. Как можно писать на языке программирования, даже элементарно не понимая что: char - это СИМВОЛ а строка - это совсем НЕ один символ Ну и кроме книжек по C, хорошо бы и книжку по железке с которую Вы "связались" прочитать. Вроде даже в банальном ките за 8 тыс. руб, обещают наличие и средств разработки и книжки и даже видео-уроков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:54 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
GeneralprogerDarkMaster, А не подскажете где скачать malloc.h, в моей среде разработки он отсутствует.... Вот с этого момента поподробнее, пожалуйста ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 14:35 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
GeneralprogerDarkMaster, А не подскажете где скачать malloc.h, в моей среде разработки он отсутствует.... malloc тут использовать вовсе не обязательно, можно и в статичной памяти то же самое сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 14:36 |
|
||
|
Реализация split в C
|
|||
|---|---|---|---|
|
#18+
MasterZivGeneralprogerDarkMaster, А не подскажете где скачать malloc.h, в моей среде разработки он отсутствует.... Вот с этого момента поподробнее, пожалуйста ... А у него микроконтроллер. Соответственно кучки функций не хватает - не реализовали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 14:58 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=36&tid=1340996]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 414ms |

| 0 / 0 |
