strtok

Из Википедии, бесплатной энциклопедии

strtok — функция стандартной библиотеки языка программирования Си, для поиска лексем в строке. Последовательность вызовов функции разбивает строку на лексемы, разделенные символами разделителями.

Прототип функции[править | править код]

Прототип, описанный в заголовочном файле string.h:

char *strtok(char *string, const char *delim); 
  • string — указатель на строку, которую нужно разбить на лексемы. После вызова строка изменяется. Для последующего вызова можно передать NULL, тогда функция продолжит поиск в оригинальной строке.
  • delim — указатель на строку, содержащую разделители.

Возвращаемое значение[править | править код]

Функция возвращает указатель на первую найденную лексему в строке. Если лексем не найдено, то возвращается пустой указатель.

Использование[править | править код]

Подключение[править | править код]

C
#include <string.h> 
C++
#include <cstring> 

Пример использования[править | править код]

#include <stdio.h> #include <string.h>   int main() {   char str[] = "Это не баг, это фича.";   printf("Разделение строки \"%s\" на лексемы.", str);   char *pch = strtok(str, " ,."); //во втором параметре указаны разделители (пробел, запятая, точка)   printf("\nЛексемы:");   while (pch != NULL) //пока есть лексемы   {       printf("\n%s", pch);       pch = strtok(NULL, " ,.");   }   return 0; } 

Вывод:

Разделение строки "Это не баг, это фича." на лексемы. Лексемы: Это не баг это фича 

Безопасность[править | править код]

Функция strtok не реентерабельна. Существуют две потокобезопасные, не входящие в стандарт функции - strtok_s (в VC++) и strtok_r (в стандарте POSIX).

Ссылки[править | править код]