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

Не работает функция fread

Добавлено: 24 май 2005, 12:37
Defder
Помогите, пожалуйста

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

Добавлено: 24 май 2005, 14:01
Romeo
файл нужно открывать "rb", если читаешь бинарные данные. Если он будет открыт, как "r", то ASCII симол 27 расценивается, как конец текстового файла, что и, происходит, собственно.

Добавлено: 24 май 2005, 14:43
Eugie
Это не единственная ошибка, во втором fread еще и 2-й параметр задан неверно.
Надо так:

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

  b=fread(FileData,VtxCount*sizeof(unsigned short),1,f); 

Добавлено: 24 май 2005, 14:53
Defder
Большое спасибо за помощь :)

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