![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Итак.. В файл было записано с помощью fwrite. Теперь считываю через fread. В char *buffer. Потом делаю strstr(buffer,target_name). И не срабатывает ничего.. Хотя я точно знаю, что есть там таргет_нейм. Проверила что лежит в буффере.. 5 знаков непонятно чего... В чём может быть ошибка? Код выставлю вечером...
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Написал на С++, не знаю, скомпилируется ли на С
смысл в том, что перед записью нужно открыть файл для записи с параметрами "w+t", после записи закрыть файл, потом открыть его для чтения с параметром "r". Это сообщение отредактировал(а) Чупакабро - 6.10.2013, 09:53 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
А что делает т? В си такого нет. Я писала открыв буквами р+б, считывала файл, открытый для р
Добавлено через 10 минут и 59 секунд Кстати, числа без проблем считываются и они даже читабельны.. Как я их и записывала.. А вот эта строка содержит и числа и стринг.. И выходит кракозябра.. При чём всегда 5 знаков, хотя там уже должно считываться около 300.... |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Код в студию --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Запись:
Чтение:
Извиняюсь, что не всё.. Код оооочень длинный.. Какие отрезки ещё нужны? |
||||||
|
|||||||
Чупакабро |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Ну, судя по приведенному коду, из файла читается строка
и выводится именно в формате строки:
и ищется именно строка
Нужен полный код программы, чтобы понять, что в итоге считывается, потому что чтение начинается с
и неизвестно, как мы пришли на эту позицию в файле --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
||||||||
|
|||||||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
эээ... Не знаю что я сделала, но оно заработало.... Спасибо..
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Поздравляю ))) Ну, программа-то, очевидно, нормально работающая, главное правильно скармливать ей исходные данные. --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
А сколько нужно резервировать места, если считывается не только чары, но и uintmax_t несколько чисел?
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
количество чаров + sizeof(unimax_t) * несколько --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Я запутался в понимании кода. Но функция strstr в общем случае не для сравнения данных, считанных из бинарного файла.
ЛУчше использовать memcmp -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
А если не сравнивать, можно считанное из бинарного файла привести в читабельный вид?
Уже подумываю сделать всё текстовым файлом, но тогда я не знаю как считывать числа.. ведь я заранее не знаю их длину.. В бинарном проще, я считывала просто sizeof(uintmax_t) количество байтов... Блин.. Всё зря... Можно сдаваться.. |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
А можно описать полностью задачу? И что в итоге не получилось? Мне кажется, та немецкая копипаста не нужна, все можно сделать проще. --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Это виртуальная файловая система.. Файл, с которым у меня проблемы, организовывает добавление/удаление файлов. Я в него записываю: размер одного блока файловой системы, количество блоков, количество свободных и количество занятых блоков. потом для каждого блока записываю 1 или 0 в зависимости от того занят он или нет. а потом уже идёт информация о файлах, которые уже лежат в файловой системе.. информация выглядит так: длина имени файла, имя файла, размер файла, в скольких блоках он размешён, а потом черечисление блоков, в которых он размещён.. застряла на выяснение, есть ли уже файл с данным названием в файловой системе. для этого мне нужно считать имена файлов и сравнить с данным названием. всё.
всё это дело я делаю бинарно. скажите, а если я запишу строку в текстовой файл с fwrite, в файле будет текст или нечитаемые строки? |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
текст на самом деле это ж очень просто записать последовательно числа и строку, тут главное не запутаться в смещениях данных В приведенном выше коде я не увидел, где читается числовая информация. Любопытно посмотреть это целиком --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Вот весь код.. Прошу нигде не выставлять его.. До декабря.
Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Ошибка найдена
![]() |
|||
|
||||
Чупакабро |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Белоснежка
Эпично )) Насколько я понял, проблема была в этой ветке:
и, насколько я понял, ошибка заключалась в том, что после
нужно было прочитать еще blockcount байтов перед тем, как начать считывать строку. Так? И еще мучает вопрос: а почему на немецком (или какой это?) языке? Это сообщение отредактировал(а) Чупакабро - 7.10.2013, 19:06 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
||||
|
|||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Там было намного больше ошибок.. И такие смешные.. Я практически закончила.. Сейчас университетский автомат проверяет.. Жду результат..
На немецком, потому что в Германии учусь/живу и т.д. ) Но в "немецком" интернете слишком мало программистов/информатиков.. Поэтому ответы там не найти.. Вот я тут и сижу ) |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
А какой курс, что за специальность, трудно ли учиться, почему С ? ))) --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Белоснежка |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Бакалавр Информатика.. Первый "курс"(бакалавр = 6 семестров(полугодий)), теоретическая информатика(дигитальная логика, микроархитектура, ассемблер, си и т.п.). Си вводит в программирование.. В этом семестре ко всему прочему будет java.. Короче, всё круто ) Ах да, вчера прошла автоматические тесты.. Осталось защитить, но это пятиминутное дело. ![]() |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Мне приятель рассказывал, что у германцев действительно крутовато в этом плане. 6 лет надо обучиться на программера, выдают полный курс насколько возможно, основные алгоритмы и малость связанной математики чтоли ( сильное отличие от штатовского первоначального подхода, у немцев много консерватизма).
А меня просто вытолкали взашей лет 20 назад в жизнь, дали пинка под зад и - шуруй изучай всё самостоятельно, что такое и с чем это всё едят. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
akizelokro, оно и понятно, 20 лет назад 93 год был. Все мы помним как в России с инф. технологиями было. У нас вон в государственном университете только недавно информатиков начали (если начали) программированию обучать, а так только делфи и всё. Благо я в частном учился.
З.Ы. германцы они такие немцы ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |