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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 13-12-2011, 01:39 Просмотров: 5172

    num_to_str Функция преобразует число в строку

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

    Инфо из string.inc:
    /* Converts number to string. */
    native num_to_str(num,string[],len);


    Синтаксис:
    num_to_str ( num, string[], len )

    • num - Переменная или число
    • string[] - Массив куда будет записан результат
    • len - Максимальный размер записи


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

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

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[string.inc] num_to_str"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


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

        register_concmd("num_to_str","f_num_to_str")
        
    }
    public f_num_to_str(id){
        
        new Num = 100
        new String[64]
        
        server_print("Num: %d if not use function: %s",Num,String)
        
        num_to_str(Num,String,10)
        
        server_print("Num: %d num to string: %s",Num,String)
    }


    Описание:
    Пример работает в консоли сервера.
    Все предельно просто, есть переменная которой сразу задается значение 100 и пустой массив.
    Сразу же вывод до использования функции и после.
    Результат на лицо:
    num_to_str
    Num: 100 if not use function:
    Num: 100 num to string: 100
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    num_to_str Функция преобразует число в строку
    Valer4

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

    Максимальный размер записи должен быть равен длине массива + 1, то есть той цифре которая указывается при инициализации, а не как в других функциях на 1 меньше.
    Пример
    public f_num_to_str(id){
        
        new Num = 100200
        new String[6]
        
        server_print("Num: %d if not use function: %s",Num,String)
        
        num_to_str(Num,String,6)
        
        server_print("Num: %d num to string: %s",Num,String)
    }
    Radius

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

    Valer4, здесь действуют те же правила. В String[5] будет 48, числовой код символа '0', а это значит что технически это уже не строка.

    Вот пример, который покажет что последствия будут.

    new Num = 100200
    new String[6], String2[6]
        
    num_to_str(Num,String,6)
        
    String2 = String
        
    server_print("Num: %d num to string: %s", Num, String2)


    Num: 0 num to string: 100200100200


    Как мы видим мы прихватили лишнее из памяти, так как 0 как признак окончания строки не был найден.
    Safety1st

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

    В последний элемент массива, предназначенного для хранения строки, нельзя ничего записывать, это обязательно. Поэтому количество записываемых в массив элементов никогда не должно превышать размер массива минус 1.

    Чтобы не заморачиваться и не допускать ошибок (если в будущем размер массива изменится), рекомендуется всегда использовать charsmax : компилятор сам вычислит, какое число должно быть на его месте:
    new iNum = 5434
    new szString[10]
    num_to_str( iNum, szString, charsmax(szString) )

    Собственно, charsmax и делает то, что описано выше словами:
    #define charsmax(%1) (sizeof(%1)-1)
    --------------------

    Информация

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

Реклама