Главная    Разработка ПО    функции языка Си

Описание функций языка Си

" S "

scalb,scalbf,scalbl 

scalbln,scalblnf,scalblnl 

scalbn,scalbnf,scalbnl 

setbuf 

setvbuf 

signbit 

sin,sinf,sinl 

sincos,sincosf,sincosl 

sinh,sinhf,sinhl 

sleep 

sqrt,sqrtf,sqrtl 

strcasestr 

strcat 

strchr 

strchrnul 

strcmp 

strcpy 

strcspn 

strdup 

strerror 

strftime 

strlen 

strncat 

strndup 

strncmp 

strncpy 

strpbrk 

strrchr 

strspn 

strstr 

strtod 

strtok 

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

strtok – разбиение строки на части по указанному разделителю.

Синтаксис:

#include < string.h >
char *strtok(char *str, const char *sep);

Аргументы:

str – указатель на разбиваемую строку.
sep – указатель на строку, содержащую набор символов разделителей.

Возвращаемое значение:

NULL – если строку str невозможно разделить на части.
Указатель на первый символ выделенной части строки.

Описание:

Функция strtok выделяет очередную часть строки, на которую указывает аргумент str, отделенную одним из символов разделителей указанных в строке, на которую указывает аргумент sep. Последовательный вызов функции strtok приводит к разбиению строки str на части (лексемы).

«При первом вызове функции strtok указывается начало разделяемой строки (str) и начало строки, содержащей разделители (sep). В начале функция strtok поочередно просматривает символы строки str и ищет символ, не содержащейся в строке разделителей sep. Если в строке str символ конца строки встречен раньше, чем был найден символ не входящий в строку sep, то разделить строку str на части нельзя и возвращается нулевой указатель (NULL). Если такой символ найден, он считается началом первой части строки str.»

Далее функция strtok ищет разделитель, то есть символ, входящий в строку sep. Если такой символ не найден, то считается, что строка str состоит из одной части и последующее разделения строки str будут возвращать нулевой указатель. Если такой символ найден. то он заменяется нулевым символом (символом конца строки). Далее функция strtok запоминает текущую позицию (указатель на символ, с которого будет начинаться поиск следующей части строки) и возвращает указатель на начало первой выделенной части строки.

Если функция strtok вернула не нулевой указатель, можно продолжить разбиение строки str на части. Для продолжения разбиения строки, повторно вызывается функция strtok, но вместо указателя на разбиваемую строку в качестве первого аугмента указывается NULL. В этом случае функция strtok продолжит разбиение с запомненного адреса. Алгоритм разбиения при этом останется тот же.

Пример:

В примере, в строка «test1/test2/test3/test4» разбивается на части по разделителю “/” с помощью функции strtok. Результат разбиения выводится на консоль.


#include < stdio.h >  // Для printf
#include < string.h > // Для strtok
int main (void)
{    
   // Массив со строкой для поиска
   char str [24]=” test1/test2/test3/test4”;
   // Набор символов, которые должны входить в искомый сегмент
   char sep [10]=”/”;
   // Переменная, в которую будут заноситься начальные адреса частей
   // строки str
   char *istr;

   printf (“Исходная строка: %s\n“, str);
   printf (“Результат разбиения:\n“);
   // Выделение первой части строки
   istr = strtok (str,sep);

   // Выделение последующих частей
   while (istr != NULL)
   {
      // Вывод очередной выделенной части
      printf (“%s\n”,istr);
      // Выделение очередной части строки
      istr = strtok (NULL,sep);
   }

   return 0;
}

Результат:

Вывод в консоль:

Исходная строка: test1/test2/test3/test4
Результат разбиения:
test1
test2
test3
test4



Смотри так же:

strtok
strtok_r


Яндекс.Метрика

Рейтинг@Mail.ru