strtok - предположительно выдает не верный результат
Не совсем могу правильно понять результат работы strtok:
Я взял полностью пример с strtok
и просто заменил строку и подстроку на свои:
int main()
{
char str[] = "hih1ihi";
char* pch;
printf("Splitting string \"%s\" into tokens:\n", str);
pch = strtok(str, "hi");
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, "hi");
}
}
Из строки "hih1ihi" и подстроки "hi" и применении strtok - я ожидал увидеть следующий результат:
h1i
Так как разделитель hi - теоретически должен был бы быть отброшен, но strtok выдает только:
1
Подскажите пожалуйста, где я ошибаюсь ?
Ответы (1 шт):
strtok работает не так. Вторым аргументом она принимает строку разделителей, а не строку-разделитель. Т.е. каждый символ из этой строки является разделителем, что Вы и наблюдаете. В Вашем случае разделителями выступают символы h и i, а не целая строка hi. Т.к. в строке hih1ihi кроме разделителей есть только символ 1, то его программа и выводит.