Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать ф-ию strtok() 
:(
    Опции темы
Гость_Алексей
Дата 28.10.2005, 02:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет! никак не могу написать аналог функции strtok()

Помогите, плиз...!
  Вверх
Emantuohtiw
Дата 28.10.2005, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.10.2005
Где: The sky where I g o to be free

Репутация: нет
Всего: нет



В чём проблема именно?
PM ICQ   Вверх
Гость_Алексей
Дата 28.10.2005, 14:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как сохранить указатель, чтобы при следующем вызове функции со значением NULL продолжать поиск дальше с того места, где закончили в предыдущий раз?
  Вверх
Гость_Алексей
Дата 28.10.2005, 14:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Кто может, плиз, выложите свою реализацию этой функции?
Желательно найти вариант решения данной задачи без использования глобальной переменной!
  Вверх
Mayk
Дата 28.10.2005, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 1
Всего: 134



Цитата
Как сохранить указатель, чтобы при следующем вызове функции со значением NULL продолжать поиск дальше с того места, где закончили в предыдущий раз?

Цитата

Желательно найти вариант решения данной задачи без использования глобальной переменной!


А чем статические не угодят?

И вообще зачем писать аналог strtok'а?

Это сообщение отредактировал(а) Mayk - 28.10.2005, 14:33


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Darhazer
Дата 28.10.2005, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



Цитата
Как сохранить указатель, чтобы при следующем вызове функции со значением NULL продолжать поиск дальше с того места, где закончили в предыдущий раз?

Пользувай static переменную. К стате, что должна делать эта функция?


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Гость_Алексей
Дата 28.10.2005, 14:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Лаба у меня такая: написать аналог функции!
  Вверх
Гость_Алексей
Дата 28.10.2005, 14:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вытаскиет лексему между определенными разделителями.
  Вверх
Neitron
Дата 28.10.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: нет
Всего: 5



Код

ф-ция(){
         static int x = 10; // Выполнится только при самом первом вызове ф-ции.  
         x++; // При новом вызове ф-ции будет начинать с последнего оставленного значения ф-цией.
}


Это сообщение отредактировал(а) Neitron - 28.10.2005, 15:47


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
szz
Дата 28.10.2005, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Цитата
Лаба у меня такая: написать аналог функции!

Посмотрите исходник в библиотеке компилятора.


--------------------
PM   Вверх
Neitron
Дата 28.10.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: нет
Всего: 5



szz
Лично я не нашел.
Только объявление.
Код

char _FAR * _RTLENTRYF _EXPFUNC strtok(char _FAR *__s1, const char _FAR *__s2);


Это сообщение отредактировал(а) Neitron - 28.10.2005, 16:41


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Mayk
Дата 28.10.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 1
Всего: 134



всякие glibc, koders.com и пр. вам в помощь...


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
szz
Дата 28.10.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Э-эх... Ну ладно, нате:
Код

#include <stddef.h>
#include <string.h>

char * strtok(char *s, char *delim)
{
    char *spanp;
    int c, sc;
    char *tok;
    static char *last;


    if (s == NULL && (s = last) == NULL)
        return (NULL);

cont:
    c = *s++;
    for (spanp = delim; (sc = *spanp++) != 0;) {
        if (c == sc)
            goto cont;
    }

    if (c == 0) {    
        last = NULL;
        return (NULL);
    }
    tok = s - 1;

    for (;;) {
        c = *s++;
        spanp = delim;
        do {
            if ((sc = *spanp++) == c) {
                if (c == 0)
                    s = NULL;
                else
                    s[-1] = 0;
                last = s;
                return (tok);
            }
        } while (sc != 0);
    }

}



--------------------
PM   Вверх
Гость_Алексей
Дата 4.11.2005, 04:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо большое!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1129 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.