Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Sp1ke
    Пользователь

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

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

    Всем привет, задался несколькими вопросами:
    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
    Сообщений
    607
    Репутация:
    289 ±
    1. Насколько я помню, то данные функции практически ничем не отличаются.
    2. Нулевой символ помогает определить конец строки в памяти.

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

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

  5. #4
    Аватар для VVWVV
    Проверенный

    Статус
    Онлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от 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
    Сообщений
    239
    Репутация:
    50 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Кстати, да. Ячеек не хватает. 3 * 4 (255 255 255 255) + 3 (точки) + 1 (\0) = 16 ячеек.
    Так у меня и выделено 16 ячеек (0-15 = 16), почему не хватает-то?

  7. #6
    Аватар для VVWVV
    Проверенный

    Статус
    Онлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от 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
    Сообщений
    239
    Репутация:
    50 ±
    Цитата Сообщение от 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
    Сообщений
    607
    Репутация:
    289 ±
    При инициализации массива указывается количество всего ячеек. 0 - это индекс первого элемента массива.

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

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

  12. #10
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

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

    UPD: Переместил тему в архив вопросов.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

 

 

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

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

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

Ваши права

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