реклама на сайте
подробности

 
 
> функция strtok(), непонятка с парсером команд
SatMinistry
сообщение Jul 20 2010, 09:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 11-06-10
Пользователь №: 57 870



Подскажите пожалуйста. Делаю парсер. Код следующий
Код
      while(1)
      {
         memset(Parser.CBuf,0,MAX_PARSER_CMD_BUF);  //очистка буфера
         GetString(Parser.CBuf);                    //получение команды в буфер
         command = strtok (Parser.CBuf, " ");       //команда - первое слово в буфере
        
         params = strtok (NULL, "w");              //следующее слово в буфере - параметры

         UART_printf ("\r\n>>параметры >>%s<<\r\n", params);

         ......................................
      }


даю с терминала команду вида:
Код
command1 w

(w у меня символ для флага что в буфере готова команда для парсера т.к. с \r и \n не работает - терминал их тупо не отправляет)
и результат выполнения
Код
command1 w
>>параметры >>‚<<

Откуда там эта запятая?

Сообщение отредактировал SatMinistry - Jul 20 2010, 09:30
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SatMinistry
сообщение Jul 21 2010, 08:59
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 11-06-10
Пользователь №: 57 870



пока хотел вам выложить код наткнулся на то что протупил....организована получается структурка с командами
Код
_cmdtabl const CMDTABL[]=
  {
      {"led_r_on"        ,0       ,Led_R_On},
      {"led_r_tgg"       ,0       ,Led_R_Tgg},
      {"led_r_off"       ,0       ,Led_R_Off},
      {"led_y_on"        ,0       ,Led_Y_On},
      {"led_y_tgg"       ,0       ,Led_Y_Tgg},
      {"led_y_off"       ,0       ,Led_R_Off},
      {"leds_on"         ,2       ,Leds_On},
      {"leds_off"        ,2       ,Leds_Off},
      { NULL,0,0},
  };

и полученная строка сравнивается с командами в цикле пока не найдет что команда совпадает или команды такой нету. И стояла проверка чтобы не превысить максимального числа команд в этой таблице
Код
if (++i>MAX_PARSER_CMD) break;

а сама переменная MAX_PARSER_CMD от предыдущих экспериментов осталась меньше чем стало число команд krapula.gif

это с моим вопросом....а с принтф таки без * rolleyes.gif

Сообщение отредактировал SatMinistry - Jul 21 2010, 09:01
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jul 22 2010, 04:56
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(SatMinistry @ Jul 21 2010, 12:59) *
и полученная строка сравнивается с командами в цикле пока не найдет что команда совпадает или команды такой нету. И стояла проверка чтобы не превысить максимального числа команд в этой таблице

Зачем вообще нужна проверка на превышения числа команд? У вас же ограничитель таблицы команд имеется.


Модератор (rezident).
_Bill, поскольку личные сообщения Вы не читаете, то предупреждаю Вас прямо здесь. Еще раз обращаю Ваше внимание на то, что Вы регулярно нарушаете п.3.4 Правил форума (излишнее цитирование). Урезайте цитаты, пользуясь редактором сообщений, перед тем как их отправлять! За игнорирование Правил форума и требований модератора следует наказание в соответствии с п.5.1 Правил форума.
Причина редактирования: нарушение п.3.4 Правил форума. Излишнее цитирование.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SatMinistry   функция strtok()   Jul 20 2010, 09:28
- - Savrik   Неплохо было бы проверять значение, возвращаемое s...   Jul 20 2010, 10:54
- - SatMinistry   я второй раз по пробелу не хочу разбивать...я пони...   Jul 20 2010, 11:32
- - Savrik   Ааа, я сразу не понял суть проблемы.. Значит, смот...   Jul 20 2010, 12:03
- - SatMinistry   наверное частично я понял. прикол был вот в чем: К...   Jul 21 2010, 08:04
- - Savrik   КодUART_printf ("\r\n>>п...   Jul 21 2010, 08:27
- - Savrik   Хорошо, что сами нашли. Но все же очень советую по...   Jul 21 2010, 09:22
- - SatMinistry   читать читал....понимаю пока мало....посоветуйте ч...   Jul 21 2010, 09:54
- - Savrik   У меня в качестве настольной по стандартам C89...   Jul 21 2010, 11:14
|- - DL36   книга Герберта Шилдта "C/C++. Справочник прог...   Jul 21 2010, 12:31
- - SatMinistry   о, спасибо большое!   Jul 21 2010, 14:53
- - SatMinistry   наверное цикл по i так по i из него и выходить... ...   Jul 22 2010, 19:42


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01297 секунд с 7
ELECTRONIX ©2004-2016