У меня проблема при работе с файлами:
Открываю файл через fopen
fhandle = open(filename1, "rb");
if (fhandle == NULL) return NULL;
Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
возникает ошибка
readed=fread(buf1, 1, 10, fhandle);
The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
Параметры я проверял — все в порядке.
Все происходит под Win2K, Visual C++ 6.0.
rsn>У меня проблема при работе с файлами: rsn>Открываю файл через fopen
rsn> fhandle = open(filename1, "rb"); rsn> if (fhandle == NULL) return NULL; rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>возникает ошибка rsn> readed=fread(buf1, 1, 10, fhandle); rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>Параметры я проверял — все в порядке. rsn>Все происходит под Win2K, Visual C++ 6.0.
Если ползуешься fread, нужно открывать файл fopen'ом
И наоборот, если открываешь open'ом, используй read.
rsn>У меня проблема при работе с файлами: rsn>Открываю файл через fopen
rsn> fhandle = open(filename1, "rb"); rsn> if (fhandle == NULL) return NULL; rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>возникает ошибка rsn> readed=fread(buf1, 1, 10, fhandle); rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>Параметры я проверял — все в порядке. rsn>Все происходит под Win2K, Visual C++ 6.0.
Требует 4-м параметром FILE* для осуществления потокового ввода/вывода. Ты же ему вместо указателя даешь число, к.рое, приведенное к указателю, дает какой-попало адрес (типа 0x00000004, например).
Открывать файлы для потокового IO надо с помощью fopen, и вообще смотреть, где f есть сначала, а где нет.
rsn> fhandle = open(filename1, "rb"); rsn> if (fhandle == NULL) return NULL; rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>возникает ошибка rsn> readed=fread(buf1, 1, 10, fhandle); rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>Параметры я проверял — все в порядке. rsn>Все происходит под Win2K, Visual C++ 6.0.
Здравствуйте Slayer, Вы писали:
S>Здравствуйте rsn, Вы писали:
rsn>>У меня проблема при работе с файлами: rsn>>Открываю файл через fopen
rsn>> fhandle = open(filename1, "rb"); rsn>> if (fhandle == NULL) return NULL; rsn>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>>возникает ошибка rsn>> readed=fread(buf1, 1, 10, fhandle); rsn>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>>Параметры я проверял — все в порядке. rsn>>Все происходит под Win2K, Visual C++ 6.0.
S>Приведи кусок кода со всеми объявлениями.
Объявления переменных:
FILE *fhandle1;
static unsigned char buf1[11];
int readed;
Затем,
fhandle = fopen(filename1, "rb");
if (fhandle == NULL) return NULL;
В предыдущем сообщении глюк закрался, конечно же fopen и fread,
иначе фиг бы я программу скомпилировал
Далее readed=fread(buf1, 1, 10, fhandle);
и тут все вылетает.
Работу fopen я проверял ferror, нету ошибок при открытии..
Здравствуйте rsn, Вы писали:
rsn>Объявления переменных:
rsn>FILE *fhandle1; rsn> static unsigned char buf1[11]; rsn> int readed; rsn>Затем, rsn> fhandle = fopen(filename1, "rb"); rsn> if (fhandle == NULL) return NULL;
rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread, rsn>иначе фиг бы я программу скомпилировал
rsn>Далее readed=fread(buf1, 1, 10, fhandle); rsn>и тут все вылетает. rsn>Работу fopen я проверял ferror, нету ошибок при открытии..
rsn>Как видите ошибиться вроде бы негде):
Действительно, ошибок не видно. Тогда так:
1. Программа падает на любом файле или только на каком-то конкретном?
2. Попробуй open/read.
3. Попробуй под отладчиком зайти в fread.
Здравствуйте SergH, Вы писали:
SH>Здравствуйте rsn, Вы писали:
rsn>>Объявления переменных:
rsn>>FILE *fhandle1; rsn>> static unsigned char buf1[11]; rsn>> int readed; rsn>>Затем, rsn>> fhandle = fopen(filename1, "rb"); rsn>> if (fhandle == NULL) return NULL;
rsn>>В предыдущем сообщении глюк закрался, конечно же fopen и fread, rsn>>иначе фиг бы я программу скомпилировал
rsn>>Далее readed=fread(buf1, 1, 10, fhandle); rsn>>и тут все вылетает. rsn>>Работу fopen я проверял ferror, нету ошибок при открытии..
rsn>>Как видите ошибиться вроде бы негде):
SH>Действительно, ошибок не видно. Тогда так:
SH>1. Программа падает на любом файле или только на каком-то конкретном? SH>2. Попробуй open/read. SH>3. Попробуй под отладчиком зайти в fread.
1. Падает на любом файле...
2. С open, read я уже намучился в свое время, теперь с fopen, fread мучаюсь
3. Если бы все было так просто, это часть DLL-ки, я туда фиг залезешь ...
Здравствуйте rsn, Вы писали:
rsn>1. Падает на любом файле...
Это хорошо . Это значит, что проблема в твоей проге и её можно исправить.
rsn>2. С open, read я уже намучился в свое время, теперь с fopen, fread мучаюсь
Т.е. от перемены функций результат не меняется? Хреново.
rsn>3. Если бы все было так просто, это часть DLL-ки, я туда фиг залезешь ...
В дебажную версию dll — без проблем. Попробуй.
Здравствуйте rsn, Вы писали:
rsn>Здравствуйте Slayer, Вы писали:
S>>Здравствуйте rsn, Вы писали:
rsn>>>У меня проблема при работе с файлами: rsn>>>Открываю файл через fopen
rsn>>> fhandle = open(filename1, "rb"); rsn>>> if (fhandle == NULL) return NULL; rsn>>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>>>возникает ошибка rsn>>> readed=fread(buf1, 1, 10, fhandle); rsn>>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>>>Параметры я проверял — все в порядке. rsn>>>Все происходит под Win2K, Visual C++ 6.0.
S>>Приведи кусок кода со всеми объявлениями.
rsn>Объявления переменных:
rsn>FILE *fhandle1; rsn> static unsigned char buf1[11]; rsn> int readed; rsn>Затем, rsn> fhandle = fopen(filename1, "rb"); rsn> if (fhandle == NULL) return NULL;
rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread, rsn>иначе фиг бы я программу скомпилировал
rsn>Далее readed=fread(buf1, 1, 10, fhandle); rsn>и тут все вылетает. rsn>Работу fopen я проверял ferror, нету ошибок при открытии..
rsn>Как видите ошибиться вроде бы негде):
Это полный код куска работы с файлом?
Подобные проблемы могут возникнуть если в fread передается неверный handle,
а handle может измениться если после открытия файла и до чтения из него
проводятся операции, которые могут нарушить стек.
FILE *fhandle1=NULL;
char buf1[11];
int readed;
fhandle = fopen(filename1, "rb"); //Было бы также интересно посмотреть на объявление и присвоение значения переменной filename1, а также попробовать вместо нее строку напрямую поставить if (fhandle == NULL) return NULL;
readed=fread(buf1, 1, 10, fhandle); //здесь попробуй воспользоваться чем нить вроде fgets или fgetc
Здравствуйте rsn, Вы писали:
rsn>Здравствуйте Slayer, Вы писали:
S>>Здравствуйте rsn, Вы писали:
rsn>>>У меня проблема при работе с файлами: rsn>>>Открываю файл через fopen
rsn>>> fhandle = open(filename1, "rb"); rsn>>> if (fhandle == NULL) return NULL; rsn>>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek) rsn>>>возникает ошибка rsn>>> readed=fread(buf1, 1, 10, fhandle); rsn>>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written". rsn>>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL. rsn>>>Параметры я проверял — все в порядке. rsn>>>Все происходит под Win2K, Visual C++ 6.0.
S>>Приведи кусок кода со всеми объявлениями.
rsn>Объявления переменных:
rsn>FILE *fhandle1; rsn> static unsigned char buf1[11]; rsn> int readed; rsn>Затем, rsn> fhandle = fopen(filename1, "rb"); rsn> if (fhandle == NULL) return NULL;
rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread, rsn>иначе фиг бы я программу скомпилировал
rsn>Далее readed=fread(buf1, 1, 10, fhandle); rsn>и тут все вылетает. rsn>Работу fopen я проверял ferror, нету ошибок при открытии..
rsn>Как видите ошибиться вроде бы негде):
Слушай, а почему объявляется fhandle1, а работаешь ты с fhandle, тоже глюк? Вообще я скомпилил твой код, всё нормально работает.