Как я могу исправить этот вызов strtok()

У меня проблема с strtok() - он не возвращает ввод, как ожидалось.

void parse_input(const char *input,unsigned char *ctext, int mlen){
  char * str = strdup(input);
  char * pch = strtok(str,"-");

  while (pch != NULL)
  {

    ctext[mlen] = (int) pch;


    pch = strtok (NULL, "-");

    mlen++;

  }

При вводе типа 1-2-3-4 я бы хотел, чтобы он заполнил ctext [1,2,3,4]. Однако это не работает. Что я делаю не так? Любая помощь приветствуется.


person franka    schedule 25.04.2013    source источник


Ответы (3)


ctext[mlen] = (int) pch;

Это хранит числовое значение указателя, тогда как вам действительно нужен символ, на который указывает указатель. Время прочитать хорошую статью/книгу/руководство по указателям.

ctext[mlen] = *pch;

это то, что вы ищете.

person Community    schedule 25.04.2013

Вы хотите получить символ в первом байте pch, а не адрес pch

ctext[mlen] = *pch;
person K Scott Piel    schedule 25.04.2013
comment
Кажется, у нас появился новый очень активный участник тега C. Добро пожаловать в Stack Overflow. - person ; 26.04.2013

person    schedule
comment
случай ctext только для одного символа: другой ответ. - person BLUEPIXY; 26.04.2013