реклама на сайте
подробности

 
 
> STRLEN с указанием явного кол-ва байт
__Alexander
сообщение Jun 8 2009, 18:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 18-07-07
Из: Киев
Пользователь №: 29 202



Это скорее не по ИАР, а вобщем по С. Но ответ на вопрос мне хочеться узнать.
Почему при явном указании на длину массива, например Mass[1], функция strlen выдает на три байта больше, а при написании массива просто Mass[] нормальное количество байт, входящего в него?

Например:

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

так вот на strlen(Str1) выдает что байт аж 5!
При этом на strlen(Str) говорит честно что там два байта.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Jun 8 2009, 18:50
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Потому, что
Код
chat Str1[2] = "YO";
резервирует только 2 элемента в массиве, а С-ная строка - это набор символов с '\0' в конце. Этот последний символ в массив и не попадает при таком объявлении. А то, что strlen выдает 5, то это чисто случайное число.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 06:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016