|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.01.2013, 07:58 | #1 |
Форумчанин
Регистрация: 14.11.2010
Сообщений: 138
|
[C] ReadFile/WriteFile
Всем доброго времени суток!
Есть вроблема с програмкой ,а именно: Unhandled exception at 0x010b1493 in lab3.exe: 0xC0000005: Access violation reading location 0x00000000. Исходник: Код:
Вроде и записываю и читаю правильно, чего я только не делал... |
16.01.2013, 08:43 | #2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Код:
Что бы это значило: ???? Код:
Должно быть что-то типа этого: Код:
Последний раз редактировалось EUGY; 16.01.2013 в 09:08. |
16.01.2013, 09:11 | #3 | |
Форумчанин
Регистрация: 14.11.2010
Сообщений: 138
|
Цитата:
Дело в том, что с winapi функциями для работы с файлами я не знаком, только из стандартной библиотеки C и C++, поэтому делал наугад. Странно, заменил i на &st[i] и всё равно та же ошибка. Не могли бы вы направить меня на путь истинный? Другие функции не предлагать, нужны именно winapi. |
|
16.01.2013, 09:30 | #4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Код:
Я не вижу причин использовать этот параметр. Или какая-то задумка c ним есть? Вот функция записи Код:
|
16.01.2013, 09:42 | #5 | |
Форумчанин
Регистрация: 14.11.2010
Сообщений: 138
|
Цитата:
Как я понимаю, эту функцию нужно будет в цикле вызывать? Т.е. если у меня массив структур, то каждый экземпляр(элемент структурного массива) нужно будет записывать? Или всё разом записывает? |
|
16.01.2013, 09:55 | #6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Конечно записывает за один раз.
Вот Вы создали Student* st = new Student[stud_number]; st - адрес stud_number - количество Для функции WriteFile этого достаточно. Начальный адрес известен, значит его и пишем. Длина записи sizeof(Student) * stud_number. Лишний параметр из функции убираем: Код:
Тут лишние все параметры. stud_number нигде внутри функции не используется. |
16.01.2013, 10:00 | #7 |
Форумчанин
Регистрация: 14.11.2010
Сообщений: 138
|
Спасибо, буду пробовать.
А на счёт DWORD nb - его использование нужно было что бы в самой функции устроить цикл который будет по одной записи записывать/выводить. Кстати, а если я хочу устроить в самой функции цикл? Т.е. если записывать в файл - тупо скормить функции массив структур и количество элементов в массиве, а она уже сама проведёт все операции? Хочу так для того, что бы кода в main() было бы меньше и более понятней. |
16.01.2013, 10:09 | #8 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Как нужно для логики программы так и поступайте. Собственно Вы и так main разгрузили. Насчет циклов - дело хозяйское, но если речь идет о том, что есть массив структур и известна его длина, то зачем нужен цикл.
|
16.01.2013, 10:19 | #9 | |
Форумчанин
Регистрация: 14.11.2010
Сообщений: 138
|
Цитата:
Код:
Если не использовать *nb параметр, как же тогда читать в цикле? Может можно как то саму фeнкцию чтения ReadFile запихнуть в условие цикла while? Последний раз редактировалось hvz-; 16.01.2013 в 10:27. |
|
16.01.2013, 10:30 | #10 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
1) for(int i=0; i < stud_number; i++) // i < stud_number
2) WriteFile(hFile, st + i, sizeof(Student), &wdBytesWritten, NULL); Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ReadFile/WriteFile - нужен совет. | Linnk | Win Api | 1 | 07.08.2012 15:57 |
ошибка в программе - Create ReadFile handle | Ted_45 | Win Api | 2 | 25.06.2012 20:17 |
ReadFile() | Madmaxisss | Visual C++ | 4 | 02.04.2012 01:01 |
проблема с ReadFile | Fog | Win Api | 4 | 01.02.2011 12:51 |
ReadFile | nazavrik | Общие вопросы C/C++ | 14 | 22.11.2009 15:11 |