이진파일입출력입니다.
모두가람
질문 제목 :
파일입출력
바이너리 파일을 2차원배열에 저장하여 데이터 처리하는것입니다.
질문 내용 : matlab,idl 을 이용한 프로그램을 짜는 프로그래머입니다.
물론 c언어도 합니다만..
궁금한 것이 있어서 이렇게 질문을 올립니다.
제가 하고싶은것은 지금 코드가바이너리 파일을 1바이트씩 읽고 2차원 배열에 저장하는 코드입니다.
전 ?x8 배열...그러니까
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
:
: (n)
:
0 0 0 0 0 0 0 0
이런식으로 넣고 싶습니다. 됩니다...
하지만.. 제가 넣을려고하는 파일의 데이터 사이즈가 16m입니다.
그리고 이진파일이죠..
분할해야 하는거 같기도 하고 그냥 한방에 넣을수 있을꺼 같기도 합니다.
하지만.. 계속 error납니다.
주소를 잘못참조한다고 합니다.
동적 메모리를 지정해야하나..라고도 생각합니다.
고수님들 부탁드립니다.
제가 이진파일을 2차원 배열로 모두다저장하여 제가 원하는 데이터 처리를 하고싶습니다.
지금 원하는것은 2차원 배열로 저장하고 싶습니다.
다른것은 매틀랩 알고리즘과 동일하게 c로구현하고 있습니다.
부탁드리겠습니다. (__)
파일 용량이 커서 안올라가네요.. 만약 파일을 원하시면 메일로 보내드리겠습니다.
정말 부탁드립니다...
#includestdio.h
#includestdlib.h
int main(void){
file *fp;
int ch;
int i=0;
int j=0;
int pos;
int buf[][8]={0,};
if ((fp=fopen(data0909_0_0.bin, rb)) == null) {
fputs(no such file, error!\n, stderr);
exit(1);
}
fseek(fp, 0, seek_end); //파일포인터를마지막으로이동
pos = ftell(fp); //파일포인터현재위치.
fseek(fp,0,seek_set);
printf(%d\n,pos);//몇바이트인지 확인.
for(i=0;ipos-1; i++){
for(j=0;j8;j++){
ch = fgetc(fp);
buf[i][j]=ch;
printf(%d\t,buf[i][j]);
}
printf(\n);
}
fclose(fp);
return 0;
}
-
누림
int buf[][8]={0,};
이렇게 배열을 선언하면 안 됩니다.