![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
mrTeapot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Доброе время, господа аксакалы.
Проблема вот в чем. Пытаюсь написать в VC++ 6.0 незатейливую утилиту, обрабатывающую архив журнала "Компьютерра" за 1995-04 гг. в формате HTML. Невинный вроде бы код const StrBufSize = 5; char* StrBuff[StrBufSize]; const MaxStrLength=4*1024; ... // Корректное (смею думать) выделение памяти под StrBuff - 4096 байт для каждого из 5 элементов ... Index=fopen(cPath, "rt"); ... for(int k=0; k<StrBufSize;k++) { if(fgets(StrBuff[k], MaxStrLength, Index) ==NULL) { CloseHandlers(4); return; } else { ... - так вот, оный код исправно срабатывает несколько десятков раз и выдает устойчивую ошибку на одном конкретном HTML-файле. При k=3 fgets считывает очередную строку не полностью, разрывая ее в одном конкретном месте. Выделенных 4 килобайт он явно не "выбирает" (смеха ради увеличивал MaxStrLength до 44 к - результат тот же). При следующей итерации (k=4) - Debug assertion failed; file fgets.c ; line 59. После else в StrBuff ничего не пишется - только поиск вхождений с помощью strstr и strchr. До конца обрабатываемого файла весьма далеко. Архив лежит на винте, а не на CD. Просмотр HTML кода злокачественного файла с индикацией непечатных символов ничего не дал. Помогите же моему горю, господа аксакалы, и да продлит Аллах дни всякого ответившего. |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Для начала так попробуй.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
mrTeapot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Надо же... Все заработало. Спасибо, брат сионист. Что, однако ж, это было? И есть ли способ это обороть, кроме статического определения?
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
mrTeapot, ты объявил массив строк(или массив указателей на тип char), но память под строки не выделил. Можно динамически тоже, вопрос только в том, а зачем это нужно. mrTeapot, что делает твоя прога или что она должна делать, конкретно. И зачем нужен массив, может быть без него можно обойтись? -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
mrTeapot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 6.4.2006 Репутация: нет Всего: нет |
Не думаю, что дело в этом. Не могу привести старый код с динамическим выделением, т. к. переписал его со статическим, но поверь на слово - я не настолько teapot и с new знаком. Опять же - я указывал, что
- нешто такое бывает без выделения? Впрочем, если была ошибка при вылелении памяти, теперь об этом не узнать. Прога моя группирует статьи заданного автора в HTML -файлы по годам, формирует ПСС, так сказать. Теперь-то это неважно - софтинка вроде работает исправно. Я понимаю, что в данном конкретном случае без динамического массива можно обойтись, хотелось бы только понять на будущее, в чем было дело. Ну да теперь чего уж... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |