Как работает функция strtok? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Закоментите пожалуйста
char *mystrtok(char * buf, const char * delim)
{
        static char * H, * T, * R;
        if (buf)
        {
                H = buf;
                T = H + strlen(H);
                for (R = H; R < T; ++R)
                        if (strchr(delim, *R))
                                *R = 0;
        }
        while (! *H && H < T)
                ++H;
        if (H >= T)
                return NULL;
        else
        {
                R = H;
                H += strlen(H);
        }
        return R;
}

Решение задачи: «Как работает функция strtok?»

textual
Листинг программы
/*char *mystrtok(char * buf, const char * delim)
{
        static char * H, * T, * R;
        if (buf)
        {
                H = buf;
                T = H + strlen(H);
                for (R = H; R < T; ++R)
                        if (strchr(delim, *R))
                                *R = 0;
        }
        while (! *H && H < T)
                ++H;
        if (H >= T)
                return NULL;
        else
        {
                R = H;
                H += strlen(H);
        }
        return R;
}*/

Объяснение кода листинга программы

В данном коде реализована функция mystrtok, которая работает аналогично функции strtok, но с некоторыми отличиями. Функция принимает два аргумента: буфер с данными и разделитель.

  1. Создаются три указателя: H, T и R.
  2. Если буфер не равен NULL, то H становится указателем на начало строки, а T — на конец строки.
  3. Для каждого символа в строке проверяется, является ли он разделителем. Если да, то этот символ заменяется на 0.
  4. Если в строке не осталось символов, то возвращается NULL.
  5. Если в строке остались символы, то возвращается указатель на первый символ. Таким образом, функция mystrtok разбивает строку на токены (подстроки), используя заданный разделитель.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5