Просмотр полной версии : [Вопрос] Сборник моих вопросов
Всем привет, задался несколькими вопросами:
1. Для форматирования mysql запроса лучше использовать всегда mysql_format, или в тех ситуациях, когда данные не могут быть изменены пользователем можно использовать обычный format?
2. Как мы все знаем то одна ячейка выделяется под "\0", но я взял в пример ip адрес 255.255.255.255 (15 символов), если сделать такую команду
CMD:teststr(playerid)
{
new ip[15];
format(ip, sizeof(ip), "255.255.255.255");
print(ip);
return true;
}
то в консоли мы получим
[20:55:32] 255.255.255.25
Но ведь запись идет с ip[0], значит 0-14 = 15 символов, и значит ip[15] должно уйти под \0, почему этого не происходит?
1. Насколько я помню, то данные функции практически ничем не отличаются.
2. Нулевой символ помогает определить конец строки в памяти.
1. Насколько я помню, то данные функции практически ничем не отличаются.
2. Нулевой символ помогает определить конец строки в памяти.
Я понимаю для чего он, но у меня выделено всего 16 ячеек (0-15), 0-14 идет запись ip адреса (пример выше) и 15-ый должен уже выделится под \0, но почему-то в консоль выводит на один символ меньше
Я понимаю для чего он, но у меня выделено всего 16 ячеек (0-15), 0-14 идет запись ip адреса (пример выше) и 15-ый должен уже выделится под \0, но почему-то в консоль выводит на один символ меньше
Кстати, да. Ячеек не хватает. 3 * 4 (255 255 255 255) + 3 (точки) + 1 (\0) = 16 ячеек.
Кстати, да. Ячеек не хватает. 3 * 4 (255 255 255 255) + 3 (точки) + 1 (\0) = 16 ячеек.
Так у меня и выделено 16 ячеек (0-15 = 16), почему не хватает-то?
Так у меня и выделено 16 ячеек (0-15 = 16), почему не хватает-то?
CMD:teststr(playerid)
{
new ip[15 /* ip адрес */ + 1 /* \0 символ */];
format(ip, sizeof(ip), "255.255.255.255");
print(ip);
return true;
}
CMD:teststr(playerid)
{
new ip[15 /* ip адрес */ + 1 /* \0 символ */];
format(ip, sizeof(ip), "255.255.255.255");
print(ip);
return true;
}
Я понимаю, но ведь запись идет с 0 ячейки? Значит 0-14 ячейки это уже записывается 255.255.255.255
При инициализации массива указывается количество всего ячеек. 0 - это индекс первого элемента массива.
При инициализации массива указывается количество всего ячеек. 0 - это индекс первого элемента массива.
Спасибо, ответ получен, прошу закрыть тему
Daniel_Cortez
17.07.2016, 22:59
ИМХО, для формирования запросов лучше всегда использовать mysql_format. На производитнльности это практически не отразится, зато всегда будет гарантия защиты от SQL-инъекций.
UPD: Переместил тему в архив вопросов.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot