Страница 1 из 1

Страное поведение функции fread (С/С++)

Добавлено: 21 июл 2008, 23:34
Llex
Открываю файл начинаю читать из него, первые вызовы функции проходят нормально

Код: Выделить всё

err = fread(&star.X,sizeof(unsigned short),1,DataFile)
после нескольких вызовов, в одном и тоже месте файла, функция возвращает, что прочитано 0 записей, хотя конец файла еще не достигнут. В чем причина? В среде разработки? Компилирую в Microsoft Visual C++ 2008

Re: Страное поведение функции fread (С/С++)

Добавлено: 22 июл 2008, 10:13
Vasilisk
А непременно нужно использовать семейство функций "fopen"?

Re: Страное поведение функции fread (С/С++)

Добавлено: 22 июл 2008, 18:33
Llex
В общем нет, но файл двоичный. И с ними я знаком :) Я давно не программировал, решил вспомнить старое. Хотя можно попробовать классы ввода вывода, посмотреть как и что там.

Re: Страное поведение функции fread (С/С++)

Добавлено: 22 июл 2008, 18:40
Vasilisk
Боже мой! Каноническим считается использование, не "классов", а юниксовой open..., принимающей не FILE, а дескриптор. В винде такая же есть - это функции read/write. Там какая-то ерунда при открытии, поэтому функция называется _open, но по read/write в MSDN всё прекрасно находится...

Re: Страное поведение функции fread (С/С++)

Добавлено: 22 июл 2008, 21:24
Llex
"Unix это хорошо, это 5" :)
Хотя я всегда fopen fread/fwrite пользовался, но тут что то непонятное. Буду пробовать.
(Винда есть винда :) )

Re: Страное поведение функции fread (С/С++)

Добавлено: 22 июл 2008, 22:24
Llex
Vasilisk огромное спасибо!
_open _lseek _read работают. :)
Слов просто нет