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

Ваш аккаунт

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

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

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

как разбить строку

62K
14 декабря 2010 года
Geksa
6 / / 11.10.2010
есть строка, например
char * str="111||22|2222||33333||4444||5||666||777|777";
как мне получить из нее 7 подстрок на чисто Си? разделитель "||". Пробовала strtok сначала, но фишка в том, что разделителем должен быть именно "||", а в strtok получается, что разделитель "|".
64K
15 декабря 2010 года
HeX0
13 / / 14.12.2010
Можно вот так вот :):
Код:
char str[]="111||22||2222|33333||4444|5||666||777||777"; //строка в которой ищем
    char delim[]="||"; //символ разделитель
    size_t dlen = strlen(delim);
    char * tokens[20]; //выделяем память под токены
    int i;
    for(i=0; i<20; ++i) tokens=NULL;
    char * tok = str; //инициализируем указатель на токен
    char * pos;
    for(i=0;(pos=strstr(tok, delim))!=NULL&&i<20;++i) //ищем где в строке встречается разделитель
    {
        pos[0]='\0'; //вставляем символы конца строки за место разделителя
        pos[1]='\0';
        tokens=tok; //заполняем массив токенов
        tok = pos+dlen; //инициализируем указатель на следующий токен
    }
    for(i=0; tokens!=NULL&&i<20; ++i) printf("tokens[%d] = %s\n\r", i, tokens); //печатаем массив токенов
64K
15 декабря 2010 года
HeX0
13 / / 14.12.2010
Цитата: Geksa
есть строка, например
char * str="111||22|2222||33333||4444||5||666||777|777";
как мне получить из нее 7 подстрок на чисто Си? разделитель "||". Пробовала strtok сначала, но фишка в том, что разделителем должен быть именно "||", а в strtok получается, что разделитель "|".



а функция strtok действительно мало подходит для этих целей, так как в ней идет проверка не со всей строкой разделителем, а с совпадением с любым из символов в строке разделителя.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог