Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > снова о разделителе strtok


Автор: admsasha 12.5.2005, 02:23
Есть строка с разделителем #, как узнать значени элементов?
проблема в то что если строка вида 1#2#3# проходит нормально (strtok), но если 1##3# - уже не правильно срабатывает, а как бы в масив этой строки записать m1=1 m2="" m3="" ?

Автор: bel_nikita 13.5.2005, 11:26
admsasha
Цитата
а как бы в масив этой строки записать m1=1 m2="" m3="" ?
Код

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int m[16] = {0};
  int i = 0;
  char* p;
  
  p = strtok("1###3##4#6###7#8####9##","#");
  
  m[i++] = atoi(p);
  printf(p);

  do{
    p = strtok(NULL,"#");
    if(p)
    {
      printf(" %s",p);
      if ( i < sizeof(m)/sizeof(m[0]) ) m[i++] = atoi(p);
    }
  } while (p);

  for ( int j = 0; j < i; j++ )
    printf("\n%d",m[j]);

  return 0;
}

Автор: comcon1 12.6.2005, 14:54
Кстати где-то чуть ли не в Ман-ах видел, что эта функция выделения токенов в GCC глючит. У меня с ней были проблемы - я вообще от нее отказался. Правда она удобная, собака. smile

Автор: vadims 7.7.2005, 13:08
comcon1 Настолько удобная, но недодуманная/недоделанная что я уже давно свою написал - простая ведь функция внутри-то

Автор: comcon1 13.7.2005, 12:07
Boost::tokenizer - и без проблем!

Автор: vadims 13.7.2005, 12:10
comcon1
У богатых свои причуды smile))



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)