Как использовать токены strtok () - PullRequest
0 голосов
/ 07 мая 2018

В соответствии с этим описанием , strtok(), разделяющим строку на токены по заданному разделителю, возвращает указатель на первый токен, найденный в строке. Все последующие токены необходимо пройти через цикл, как пример кода, приведенный в ссылке.

Каждый ли токен автоматически оканчивается на NULL? то есть я могу просто назначить каждый токен переменной и использовать его или ему нужно strncpy() скопировать в выделенное место?

Например, будет ли это действительным?

   char str[80] = "This is - www.tutorialspoint.com - website";
   const char s[2] = "-";
   char *token;

   char *test[4];
   int test_count = 0;
   memset(test, 0x00, 4);

   /* get the first token */
   token = strtok(str, s);

   /* walk through other tokens */
   while( token != NULL ) {
      test[test_count] = token;
      test_count++;
      token = strtok(NULL, s);
   }

1 Ответ

0 голосов
/ 07 мая 2018

strtok() работает с вашей исходной строкой ввода, путем замены первого вхождения символа в списке разделителей на '\0'. Так что да, это целевое использование, как вы его описали.

Примечания:

  • не пишите такие вещи, как

    const char s[2] = "-";
    

    только с использованием

    const char s[] = "-";
    

    позволяет компилятору автоматически определить правильный размер

  • в этом особом случае достаточно просто передать "-" в strtok() (или #define в "-"), приличный компилятор распознает идентичные строковые литералы и создает только один их экземпляр.

  • на всякий случай полезно посмотреть какой-то код, вот простая реализация strtok Я сделал это некоторое время назад.

...