Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STRLEN с указанием явного кол-ва байт
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
__Alexander
Это скорее не по ИАР, а вобщем по С. Но ответ на вопрос мне хочеться узнать.
Почему при явном указании на длину массива, например Mass[1], функция strlen выдает на три байта больше, а при написании массива просто Mass[] нормальное количество байт, входящего в него?

Например:

chat Str[] = "YO";
chat Str1[2] = "YO";

так вот на strlen(Str1) выдает что байт аж 5!
При этом на strlen(Str) говорит честно что там два байта.
sergeeff
Потому, что
Код
chat Str1[2] = "YO";
резервирует только 2 элемента в массиве, а С-ная строка - это набор символов с '\0' в конце. Этот последний символ в массив и не попадает при таком объявлении. А то, что strlen выдает 5, то это чисто случайное число.
rezident
А где у вас определен тип переменных chat? wink.gif Если это банальная описка и chat это на самом деле char, то размер массива для строки из двух символов должен быть как минимум 3. Не забывайте про завершающий строку нуль!, который в случае объявления массива Str добавляется автоматически так, что размер Str на самом деле 3, а не как вы предполагаете 2. Возварщает же strlen(Str) размер 2 потому, что завершающий нуль функцией strlen не учитывается. Как говорится - RTFM, то бишь изучайте стандарт С laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.