Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 9
    Гостей: 5
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, Yandex Bot, crawl Bot, Google AdSense

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Monstr™ Дата: 18-03-2012, 13:08 Просмотров: 4333

    strtok Функция делит строку на 2 строки по указанному символу

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

    Инфо из string.inc:
    /* Breaks a string into two halves, by token.
       See strbreak() for doing this with parameters.
       Example:
       str1[] = This *is*some text
       strtok(str1, left, 24, right, 24, '*')
       left will be "This "
       Right will be "is*some text"
       If you use trimSpaces, all spaces are trimmed from Left.
    */
    native strtok(const text[], Left[], leftLen, Right[], rightLen, token=' ', trimSpaces=0);


    Синтаксис:
    strtok(const text[], Left[], leftLen, Right[], rightLen, token=' ', trimSpaces=0);


    • const text[] - Массив или текст для обработки.
    • Left[] - Массив для записи левой части текста.
    • leftLen - Длина массива левой части.
    • Right[] - Массив для записи правой части текста.
    • rightLen - Длина массива правой части.
    • token=' ' - Символ до которого отсекается левая часть
    • trimSpaces=0 - Если поставить 1, то разделителем будет так же первый найденный пробел.


    Тип функции:
    Native

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[string.inc] strtok"
    #define VERSION "0.1"
    #define AUTHOR "Mon[str] & Admin"


    public plugin_init(){
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_concmd("strtok_text","test")
    }
    public test(id){
        
        //текст для пробы
        new szString[] = "Hellow! My Name Is Mon[str]"
        
        //Массивы для записи левой и правой части
        new szArg1[10], szArg2[25]
        
        //Вызываем функцию
        //'!' восклицательный знак и есть маркер(метка) для разделения
        strtok(szString, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2), '!')
        
        //Вывод в консоль сервера 2 подстроки
        
        server_print("^nText[left]:%s", szArg1)
        server_print("Text[right]%s^n", szArg2)
    }


    Описание:
    При введение в консоль сервера команды strtok_text, сервер выдаст разделенную строку Hellow! My Name Is Mon[str]
    strtok_text

    Text[left]:Hellow
    Text[right] My Name Is Mon[str]


    Обратите внимание что сам символ для разделения не появляется ни в одной из строк.
    А во второй строке появляется пробел в начале строки.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    FellomoN

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    parse тоже самое выполняет winked
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Где же ты там одинаковость увидел?

    Получение по аргументам парс: "loopback" "" "abcdefghijklmnopqrstu" "de"
    будет 2 и более массивов: loopback ' ' abcdefghijklmnopqrstu de 4 массива
    и
    strtok
    где будет только 2 массива
    Не говоря уже об указателе и т.п.
    --------------------
    Kapu

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    А как сложить две строки? Не форматированиями всякими, а именно сложить, как в пхп concatенация нарпимер: $str1.=str2?
    igas

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    использовать format или add
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    А ещё strtok делит строку по первому указанному символу.
    Т.е.

    new arg1[33], arg2[64]
    strtok("тра-та-та мы везём с собой кота", arg1, charsmax(arg1), arg2, charsmax(arg2), " ")

    arg1 = "тра-та-та"
    arg2 = " мы везём с собой кота"


    ____________________________________________________________
    Кэп ))

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама