Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±

    Сборник моих вопросов

    Всем привет, задался несколькими вопросами:
    1. Для форматирования mysql запроса лучше использовать всегда mysql_format, или в тех ситуациях, когда данные не могут быть изменены пользователем можно использовать обычный format?
    2. Как мы все знаем то одна ячейка выделяется под "\0", но я взял в пример ip адрес 255.255.255.255 (15 символов), если сделать такую команду
    PHP код:
    CMD:teststr(playerid)
    {
        new 
    ip[15];
        
    format(ipsizeof(ip), "255.255.255.255");
        print(
    ip);
        return 
    true;

    то в консоли мы получим
    PHP код:
    [20:55:32255.255.255.25 
    Но ведь запись идет с ip[0], значит 0-14 = 15 символов, и значит ip[15] должно уйти под \0, почему этого не происходит?
    Последний раз редактировалось Sp1ke; 17.07.2016 в 22:29. Причина: исправил ошибку

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    1. Насколько я помню, то данные функции практически ничем не отличаются.
    2. Нулевой символ помогает определить конец строки в памяти.

  3. Пользователь сказал cпасибо:
    Sp1ke (17.07.2016)
  4. #3
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    1. Насколько я помню, то данные функции практически ничем не отличаются.
    2. Нулевой символ помогает определить конец строки в памяти.
    Я понимаю для чего он, но у меня выделено всего 16 ячеек (0-15), 0-14 идет запись ip адреса (пример выше) и 15-ый должен уже выделится под \0, но почему-то в консоль выводит на один символ меньше

  5. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Sp1ke Посмотреть сообщение
    Я понимаю для чего он, но у меня выделено всего 16 ячеек (0-15), 0-14 идет запись ip адреса (пример выше) и 15-ый должен уже выделится под \0, но почему-то в консоль выводит на один символ меньше
    Кстати, да. Ячеек не хватает. 3 * 4 (255 255 255 255) + 3 (точки) + 1 (\0) = 16 ячеек.

  6. #5
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Кстати, да. Ячеек не хватает. 3 * 4 (255 255 255 255) + 3 (точки) + 1 (\0) = 16 ячеек.
    Так у меня и выделено 16 ячеек (0-15 = 16), почему не хватает-то?

  7. #6
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Sp1ke Посмотреть сообщение
    Так у меня и выделено 16 ячеек (0-15 = 16), почему не хватает-то?
    PHP код:
    CMD:teststr(playerid)
    {
        new 
    ip[15 /* ip адрес */ /* \0 символ */];
        
    format(ipsizeof(ip), "255.255.255.255");
        print(
    ip);
        return 
    true;


  8. #7
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    PHP код:
    CMD:teststr(playerid)
    {
        new 
    ip[15 /* ip адрес */ /* \0 символ */];
        
    format(ipsizeof(ip), "255.255.255.255");
        print(
    ip);
        return 
    true;

    Я понимаю, но ведь запись идет с 0 ячейки? Значит 0-14 ячейки это уже записывается 255.255.255.255

  9. #8
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    При инициализации массива указывается количество всего ячеек. 0 - это индекс первого элемента массива.

  10. Пользователь сказал cпасибо:
    Sp1ke (17.07.2016)
  11. #9
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    При инициализации массива указывается количество всего ячеек. 0 - это индекс первого элемента массива.
    Спасибо, ответ получен, прошу закрыть тему

  12. #10
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    ИМХО, для формирования запросов лучше всегда использовать mysql_format. На производитнльности это практически не отразится, зато всегда будет гарантия защиты от SQL-инъекций.

    UPD: Переместил тему в архив вопросов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •