|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
||||||
прога странно работает=) кому интересно покопать?10.05.2009, 17:24. Показов 1607. Ответов 13
Метки нет (Все метки)
написал прогу по подсчету crc-16 (сама функция с википедии).. так вот... когда скармливаю файл (текстовыми кормлю) на несоклько килобайт (1 - 50-100 примерно) - вроде корректно работает... как только объем начинает приближатсья к полуметру и выше - косячит - в лучшем случае вылетает... в чем у меня ошибка?
П.С. -наплодил переменных потмоу что когда значения счетчиков доходят до определнного момента -они то ли сдвигают друг друга то ли что....
0
|
||||||
| 10.05.2009, 17:24 | |
|
Ответы с готовыми решениями:
13
Кому интересно. Покер Кому интересно поломать голову Бинарные деревья ! кому интересно , сюда!;) |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 11.05.2009, 00:55 | ||
|
Действительно странно:
str[i]=NULL; ? Разве, NULL не для указателей? Вот...а еще хорошо бы, чтобы ты показал тем, кто будет читать, как именно она косячит на больших файлах. Ожидаемый результат, получаемый результат.
0
|
||
|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
|
| 11.05.2009, 08:55 [ТС] | |
|
так, косячит она по разному... ну... ожидаемый результат на выходе - значение CRC для этого файла.... на больших она:
1.или выдает неправильное значение ( почему то не доходит до конца файла - принимая в нем какое то место за конец - каждый раз разное - я не знаю чт оможет быть с функцией feof()) 2.либо не выдает значение вообще - тут я проходился вотчем -смотрел - прога правильно вычисляет длинну файла, но потом когда по этой длинне она забивает в динамический массив значения, она опять проходит не весь файл (примерно до середины - хз) или в строчке if(a>=len)printf("\n\tError:something wrong with file\n"); переменная а с чего то "улетает" в значениях и пишет эту ошибку.. так или иначе - не наберя всех значений в массив, она не заходит в функцию crc -просто игнорируя ее и зависает... повторюсь что на маленьких файлах прога работеает адекватно и правильно. и еще - почему то у нее значения счетчиков бывают вылезают совсем бредовые (как в случае с а).. но я так думаю что из за больших значений там что то в памяти происходит - вот для этого у меня знаний и опыта и не хватает
0
|
|
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 11.05.2009, 09:54 | |
|
итак...внимательно смотрим на функцию...и видим
MaxLen: 4095 байт (32767 бит)*/ это говорит о том, что CRC уже может и соврать при ваших сотнях килобайтов. то есть возможно, что единичная ошибка не будет обнаружена... а по делу... for(a=0;a<len;a++) { str[i]=NULL; } обращаешься за пределы массива..ибо i=len... надо str[a]=0;
1
|
|
|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
|
| 11.05.2009, 10:01 [ТС] | |
|
опа=)) спалилсо=))) глупая на самом деле ошибка, спс
Добавлено через 4 минуты 27 секунд а еще ошибки?
0
|
|
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|
| 11.05.2009, 10:22 | |
|
printf("\n\tCRC = 0x%X\n", Crc16(str, len-1));
CRC берешь не от всего массива...надо len, а не len-1 ну и хватит...
0
|
|
|
|
|
| 11.05.2009, 11:39 | |
|
Если запускаешь под виндой, то проблема будет в том, как ты открываешь файл. В fopen ты подаёшь "rt" (кстати, что такое t?). Нужно "rb". Без b последовательность "\r\n" будет чиатться как один символ "\n"
Цикл после calloc, который не понравился Vourhey, вообще не в кассу. Calloc память и так зануляет. Что ты этим циклом хотел сделать? Добавлено через 6 минут 11 секунд И вообще зачем память занулять, если ты туда потом файл перепишешь?
0
|
|
|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
||
| 11.05.2009, 13:40 [ТС] | ||
|
Добавлено через 54 секунды если поставить просто len - он считает неправильно, проверял
0
|
||
|
|
||||||||||||
| 11.05.2009, 16:21 | ||||||||||||
1
|
||||||||||||
|
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
|
|||
| 11.05.2009, 16:49 | |||
|
Добавлено через 4 минуты 55 секунд все...понял..ошибаюся, но как-то так и не понял как удалить все...
0
|
|||
|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
|
| 11.05.2009, 16:50 [ТС] | |
|
=)) нет, crc нужен чтобы проверять целостность потока данных..... при отправке получении.. короче препод далв универе лабу - что мне еще остаеться -реализовываем=)
0
|
|
|
|
||
| 11.05.2009, 17:31 | ||
|
Сейчас есть дополнительное применение - защита дистрибутивов от ручных правок в коде. Т.е. есть у тебя дистрибутив программы, а с ней разработчик помещает контрольную сумму (которую, условно говоря, пишут на листочке). Далее у тебя есть копия этой программы. Ты запускаешь и проверяешь, что контрольная сумма совпадает. Если хакеры своими ручками что-то попытаются вставить в код программы, то контрольная сумма начинает уплывать (т.е. перестаёт совпадать с тем, что публикует разработчик). Правда для целе защиты используют что-то типа md5, где более сложно нахимичить с файлом так, чтобы контрольная сумма совпала
0
|
||
|
Сонный металюга
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
|
|
| 11.05.2009, 17:34 [ТС] | |
|
ну, мне можешь это не объяснять=))) рз я это реализую -значит знаю что и для чего... и не тока в дистрибутивах -архиваторы тоже используют..
вот например если винрар выдает что неожиданный конец архива (скачанного) -значит какт о не так скачал... ибо контр сумма передаеться вместе с архивом
0
|
|
|
|
|
| 11.05.2009, 17:52 | |
|
Лишний раз объяснить не помешает. Кому-нибудь может оказаться полезным
0
|
|
| 11.05.2009, 17:52 | |
|
Помогаю со студенческими работами здесь
14
Шифрование "Лозунговым методом" (кому интересно) Работаю с файлом *.txt. Прога ведет себя странно если последняя строка файла пуста. Почему так? Открыта вакансия Программиста 1С - кому интересно? Сделал COM компонент для 1С на C#, кому интересно смотрите
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|