Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с strtok/strtok_s

62K
13 февраля 2011 года
oxide
8 / / 07.12.2010
Проблема состоит в том что выделеный фрагмент должет отрабатывать по три раза на каждый вызов (цикл в цикле).

пробоввал загонять в цикл for, как я понял после одной итерации внутреннего цикла сохраняется только bee (

#include<stdio.h>
#include<conio.h>
#include<string.h>

int main(void){
char str[] = "Get bee geter beever";

char predl[] = "bee get";
char razd[] = ",.! :";
char *leksema, *token;
char *pr, *token2;

leksema = strtok_s(str, razd, &token);
while(leksema != NULL)
{
pr = strtok_s(predl, razd, &token2);

 
Код:
while(pr != NULL)
        {
            printf("%s ! %s\n", leksema, pr);

            pr = strtok_s(NULL, razd, &token2);
        }

leksema = strtok_s(NULL, razd, &token);
}

_getch();

return 0;
}
278
13 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=MSDN]
Each call (of strtok_s) modifies strToken by substituting a NULL character for each delimiter that is encountered.
[/QUOTE]

Следовательно, ситуация следующая. Первый проход внутреннего цикла осуществляется правильно. Однако после него переменная predl вместо значения "bee get" принимает значение "bee\0get", откуда видно, что слово "get" становится недоступным для последующего парсинга.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог