Двоичные файлы
При открытии функцией fopen указывается режим: wb (аналогично wt для текстовых) и rb (вместо rt для текстовых) (Табл.1.3).
Чтение из двоичного файла выполняется [A n]=fread(f, n, type); где А матрица, n количество реально считанных в нее элементов.
uchar | 1 байт | Целое беззнак. | uint16 | 2 | Целое без знака |
schar | 1 | Целое со знаком | uint32 | 4 | Целое без знака |
int16 | 2 | Целое со знаком | uint64 | 8 | Целое без знака |
int32 | 4 | Целое со знаком | float32 | 4 | Вещественное число |
int64 | 8 | Целое со знаком | float64 | 8 | Вещественное число |
Таблица 1.3. Размеры переменных различных типов
В правой части выражения, f идентификатор файла, n количество считываемых (если удастся столько считать) элементов, type указывает сколько байт в каждом считываемом элементе. Если параметр type (см. таблицу) не указан то по умолчанию программа будет считать что выбрано значение uchar. Если пропущено количество n считываемых элементов, то будет считывать до конца файла.
function[]=exFread() f=fopen('exFwrite1_1.dat','rb'); x=fread(f,1,'int32') A=fread(f,x,'float32') fclose(f); f=fopen('exFwrite1_2.dat','rb'); x=fread(f,1,'int32') A=fread(f, [2 2], 'float32') fclose(f); end |
Текущая позиция указателя (сколько байт от начала файла) возвращается функцией ftell(f) где f идентификатор файла. Вернуть указатель в начало файла можно функцией frewind(f). Остальные перемещения указателя с помощью функции fseek(f,n,origin) где n перемещение (в байтах) относительно позиции origin (три варианта: ‘bof’ или -1 начало файла, ‘eof’ или 1 конец файла, ‘cof’ или 0 текущая позиция. Относительно текущей позиции вперед n>0, назад n<0. В остальных случаях n>0.)
|
|
Запись в двоичный файл осуществляется функцией
n=fwrite(f, A, type) где f идентификатор файла, A матрица которую записываем, type тип записываемых значений, n отчет о количестве реально записанных значений.
Аналогично чтение из файла.