Программирование на C и C++

Онлайн справочник программиста на C и C++

strtok, _fstrtok

char *strtok(const char *str1, const char *str2)

char far * far _fstrtok(const char far *str1, const char far *str2)

Прототип: 
Описание: 

Функция strtok() возвращает указатель на следующую лексему в строке, на которую указывает str1. Символы из строки, на которую указывает str2, используются как ограничители, определяю­щие лексему. Если лексема не найдена, возвращается NULL.

Во время первого вызова функции strtok() в качестве указателя в самом деле используется str1. При последующих вызовах в качестве первого аргумента используется NULL. Таким образом вся строка может быть разбита на лексемы.

Важно понимать, что функция strtok() модифицирует строку, на которую указывает str1. Каж­дый раз, когда найдена лексема, на месте, где был найден ограничитель, помещается нулевой символ. Таким образом strtok() продвигается вдоль строки.

При каждом вызове strtok() можно варьировать набор ограничителей.

Функция _fstrtok() является FAR-версией рассматриваемой функции.

Пример: 
Следующая программа разбивает на лексемы строку «The summer soldier, the sunshine patriot», используя в качестве ограничителей пробелы и запятые. В результате работы программы будет сформирована строка следующего вида: «The | summer | soldier | the | sunshine | patriot».
#include <stdio.h>
#include <string.h>
int main(void)
{
char *p;
p = strtok("The summer soldier, the sunshine patriot"," ");
printf(p);
do {
p=strtok('\0', ", ");
if(p) printf("|% s", p);
} while(p);
return 0;
}