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

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
Llex
Сообщения: 10
Зарегистрирован: 19 июл 2008, 19:00

Открываю файл начинаю читать из него, первые вызовы функции проходят нормально

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

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

А непременно нужно использовать семейство функций "fopen"?
Llex
Сообщения: 10
Зарегистрирован: 19 июл 2008, 19:00

В общем нет, но файл двоичный. И с ними я знаком :) Я давно не программировал, решил вспомнить старое. Хотя можно попробовать классы ввода вывода, посмотреть как и что там.
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

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

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

Vasilisk огромное спасибо!
_open _lseek _read работают. :)
Слов просто нет
Ответить