git-svn-id: http://moon:8086/svn/software/trunk/libsrc/_to_be_added@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
83 lines
2.1 KiB
C
Executable File
83 lines
2.1 KiB
C
Executable File
// -----------------------------------------------------------------------------------------
|
|
// mlio.c
|
|
// Input/output for Matlab matrices
|
|
// -----------------------------------------------------------------------------------------
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "mlio.h"
|
|
|
|
// -----------------------------------------------------------------------------------------
|
|
int mlio_open(mlio_t *pObj, char *pName, unsigned mode)
|
|
{
|
|
|
|
pObj->io_mode = mode;
|
|
|
|
if (mode == MLIO_READ)
|
|
{
|
|
pObj->pFile = fopen(pName, "rb");
|
|
|
|
// Read input file
|
|
if (!pObj->pFile)
|
|
{
|
|
fprintf(stderr,"Unable to open input file %s\n", pName);
|
|
return -1;
|
|
}
|
|
|
|
// Header
|
|
fread(&pObj->hdr_file.version, 1, sizeof(unsigned), pObj->pFile);
|
|
fscanf(pObj->pFile, "%s", pObj->hdr_file.prec_typename);
|
|
fseek(pObj->pFile, 1, SEEK_CUR);
|
|
fread(&pObj->hdr_data, 1, sizeof(data_hdr_t), pObj->pFile);
|
|
printf("Rows=%d, Columns=%d, File size=%d bytes\n", pObj->hdr_data.num_row, pObj->hdr_data.num_col, pObj->hdr_data.size);
|
|
|
|
}
|
|
else
|
|
{
|
|
pObj->pFile = fopen(pName, "wb");
|
|
|
|
// Write output file
|
|
if (!pObj->pFile)
|
|
{
|
|
fprintf(stderr,"Unable to open output file %s\n", pName);
|
|
return -1;
|
|
}
|
|
|
|
}
|
|
return 0;
|
|
|
|
}
|
|
|
|
int mlio_close(mlio_t *pObj)
|
|
{
|
|
return fclose(pObj->pFile);
|
|
}
|
|
|
|
int mlio_read(mlio_t *pObj, double *pData)
|
|
{
|
|
// Read data
|
|
fread(pData, pObj->hdr_data.num_row*pObj->hdr_data.num_col, sizeof(double), pObj->pFile);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
int mlio_write(mlio_t *pObj, double *pData, unsigned num_rows, unsigned num_cols)
|
|
{
|
|
|
|
pObj->hdr_data.num_row = num_rows;
|
|
pObj->hdr_data.num_col = num_cols;
|
|
|
|
// Header
|
|
fwrite(&pObj->hdr_file.version, 1, sizeof(unsigned), pObj->pFile);
|
|
fprintf(pObj->pFile, "%s\r", pObj->hdr_file.prec_typename);
|
|
fwrite(&pObj->hdr_data, 1, sizeof(data_hdr_t), pObj->pFile);
|
|
|
|
// Write data
|
|
fwrite(pData, pObj->hdr_data.num_row*pObj->hdr_data.num_col, sizeof(double), pObj->pFile);
|
|
|
|
return 0;
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------
|