Помогите, пожалуйста
FILE *f;
f=fopen("3.tri","r");
if (!f) {
sprintf(str, "Error read file");
return 1;
}
TriHeader hdr;
int b;
b=fread(&hdr,16,1,f);
unsigned short *FileData;
unsigned VtxCount=4*hdr.M*hdr.N-2;
FileData=new unsigned short [VtxCount];
b=fread(FileData,VtxCount,1,f);
TriHeader - 16 байт
В общем первая функция fread читает, вторая - нет.
Размер файла достаточный.
Читал мелкими порциями (по 2 байта), прочитало только часть файла. Дальше - та же проблема.
Компилятор - Visual C++ 6.0
Не работает функция fread
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
файл нужно открывать "rb", если читаешь бинарные данные. Если он будет открыт, как "r", то ASCII симол 27 расценивается, как конец текстового файла, что и, происходит, собственно.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Это не единственная ошибка, во втором fread еще и 2-й параметр задан неверно.
Надо так:
Надо так:
Код: Выделить всё
b=fread(FileData,VtxCount*sizeof(unsigned short),1,f);
Большое спасибо за помощь
Переводил код с MATLAB, там файловые функции так же называются, но работают по другому

Переводил код с MATLAB, там файловые функции так же называются, но работают по другому