![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Xaotuk |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.2.2008 Репутация: нет Всего: нет |
Проблема: необходимо обрабатывать массив байт, но так как такого типа в С++ нет использую unsigned char. При записи в массив должны использоваться любые символы, в том числе может встречаться и ноль символ '\0'. При обработке полученного массива не могу корректно определить конец строки, при записи str[i]!=NULL все равно идет остановка на ноль символе.
К примеру функция определения длины массива:
Вернет только до '\0' несмотря на то что проверяется на NULL. Вопрос: как сделать проверку на инициализацию ячеек памяти, а не на их содержимое в этом случае. Использую динамические массивы, на всякий случай полный код:
В функции Add при определении длины входного массива и начинаются косяки если в середине массива встречается '\0'. |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Xaotuk, 0==NULL
"инициализацию ячеек памяти" такого понятия не существует Это сообщение отредактировал(а) GoldFinch - 8.4.2009, 12:26 |
|||
|
||||
| Xaotuk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.2.2008 Репутация: нет Всего: нет |
Тогда как решить проблему?
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
|
|||
|
||||
| Xaotuk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.2.2008 Репутация: нет Всего: нет |
Не годится. Во-первых, vector не вернет мне указатель на массив, а он мне нужен чтобы вызывать функцию генерации хэш кода, во-вторых, если и сделать возврат указателя будет первая проблема...
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
Явно хранить и передавать размер массива (или размер хранящихся данных)
|
|||
|
||||
| Xaotuk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.2.2008 Репутация: нет Всего: нет |
Поясню подробнее.
1. Есть массив типа unsigned char, служащий для накопления данных извне. 2. Есть поток байт приходящий извне, его я пихаю в массив накопитель. 3. Мне надо определять длину приходящего потока, причем определением конца потока не должен быть ноль-символ. И вот как сделать последнее не знаю. |
|||
|
||||
| X-3R1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
Вектор это последовательный контейнер, т.е. память в нём находится последовательно. Поэтому указатель на первый элемент. Это и будет твой "указатель на массив". Только советую получать указатель на массив, перед его использованием, ибо при добавлении новых элементов, м. произойти перераспределение памяти, и указатель станет невалидным. Это сообщение отредактировал(а) X-3R1 - 8.4.2009, 13:26 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Dem_max |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
сделай так
Выбери концом данных другой символ Это сообщение отредактировал(а) Dem_max - 8.4.2009, 13:43 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||||
|
|||||||
| X-3R1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
X-3R1, и что, что исключение? в исключении и освобождай, по finally
|
|||
|
||||
| X-3R1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
GoldFinch, удачи
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Двойная работа, не комильфо. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |