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).
Ссылки C++ reference: strtok — описание strtok с примером.
Категория:String.h Категория:Небезопасные функции Си