FFT source code에 접목할 trace 배열을 읽어들이는 작업을 하고 있습니다.
fortran에서 생성된 400 X 2000 binary 파일을 C++에서 double형 배열에 입력하고자 합니다.
ascii파일은 쉽게 수행했는데, binary는 구글링해서 예시들을 봐도 어떻게 적용해야 될지 막막하네요...;;
fortran에서 binary 파일 작성 시의 파일 open command는
open(unit=1,file='rec.bin', form='unformatted', access='direct, recl=4*nt) 입니다.
size를 nt*nx*sizeof(double) 식으로 진행해서 buffer에 저장한 이후 차례로 읽어들이려 했는데
잘 안되네요;;
대부분의 예시들은 char이 많던데...
double 형태의 배열에 바로 읽을 수 있는 방법이 어떤게 있는지 부탁드립니다.
=====================================================================
★ ASCII의 경우
double **data;
/* Allocates array */
data=(double**)malloc(nx*sizeof(double*));
for (i=0;i<nx;i++) data[i]=(double*)malloc(nt*sizeof(double));
/* File open */
std::ifstream fin("rec.ascii", std::ios::in);
for (i=0;i<nx;i++){
for (j=0;j<nt;j++) fin >> data[i][j];
}
fin.close();
=====================================================================
★ Binary의 경우
double **data;
nx=400;
nt=2000;
/* Allocates array */
data=(double**)malloc(nx*sizeof(double*));
for (i=0;i<nx;i++) data[i]=(double*)malloc(nt*sizeof(double));
/* File open */
std::fstream fin("rec.bin", std::ios::in | std::ios_base::binary);
fin.read( (char*)&in_array, sizeof(double) );
fin.close();
|