Ребят,как я понял нельзя узнать длину строки константы? Сколько не пробовал,получал одну и ту же ошибку. Если можно,поделитесь как
Ребят,как я понял нельзя узнать длину строки константы? Сколько не пробовал,получал одну и ту же ошибку. Если можно,поделитесь как
PHP код:
const string[] = "abcd";
printf("Длина строки: %d", sizeof(string));
printf("Длина строки: %d", strlen(string));
franked (18.02.2016)
franked (18.02.2016)
franked (18.02.2016)
Ой..,забыл упомянуть,константы типа #define,вот тут уж точно нельзя,да?
P.S благодарен,что не прошли эту тему стороной!
Можно.
PHP код:
#define TEST1 Пример строки №1.
#define TEST2 "Пример строки №2."
printf("TEST1:%i", strlen(""#TEST1""));
printf("TEST2:%i", strlen(TEST2));
franked (18.02.2016)
Тогда в первом варианте должно быть не "длина строки", а "размер строки" или "размер массива", т.к. это не одно и то же.
Как-то так, берём размер строки и вычитаем 1 ячейку, отведённую под символ конца строки (нуль-символ).PHP код:
static const str_0[] = "Sample text";
printf("text: %s, length: %d", str_0, sizeof(str_0)-1);
Но такой подход работает не во всех ситуациях. Например, в массив из 20 ячеек можно записать текст из 10 символов и будут заняты только 11 ячеек из 20 - тогда придётся использовать strlen. Здесь sizeof(str_0)-1 работает только потому, что компилятор сам рассчитывает минимальный размер массива, достаточный, чтобы вместить в него строку.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Отлично! Всем большое спасибо за ответы! Вот только еще такой вопрос...
У меня имеется функция,куда я могу передать строку. Но эту строку я так же могу и не передавать,то есть строка - не обязательный параметр.
И вот тут как раз меня не спасает не один из выше приведенных вариантов...PHP код:
stock MyFunc(playerid, id, text[] = "")//И по умолчанию она равняется пустому символу как бы
{
//Так вот,я бы хотел рассчитать внутри этой функции размер текста.
new testVar[10+sizeof(text)];//Вот примерно таким образом
}
Как я понял,это безвыходная ситуация? Получается так нельзя заполнить переменную никак? типа "динамическим" образом?
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
franked (18.02.2016)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)