file에서 64bit unsigned integer값 읽어오기...

kook123의 이미지

4Gbyte 파일에 64bit integer값이 little endian 형식으로 차례대로 기록되어있는데

이걸 어떻게 읽어와야 하는지...

값을 읽긴하는데 어느 정도 읽다가 계속 오류가 나네요...

읽은 값이 바르게 읽은 건지도 모르겠구요

FILE *fp1;

unsigned __int64 *array1;

int i=0;

if (fp1 = fopen("array1.dat", "r"))
{
    array1 = (unsigned __int64 *) malloc(sizeof(fp1));

    while(fscanf(fp1,"%I64u",&array1[i])!=EOF)
    {
        printf("%I64u\n",array1[i++]);
    }
}

이런식으로 짰는데....

파일에는

array1.dat =
{
0b9cba234dfa382b,
39a3a0d4d852f190,
b9327f793917ff50,
1616a4aabd698224
...
fa042ea941e23e5f,
3b822f8e29debd79,
10c3149ac586d931,
ff7010cd11748990
}

이런식으로 데이터가 들어가 있다고 합니다.

용량이 커서 텍스트 편집기로는 확인이 불가능하네요 ㅡ.ㅡ;;

고수님들 부탁드립니다 ^^;;

hyperhidrosis의 이미지

파일의 내용은 cat 이나 type 로 콘솔에서 확인 가능하고,

array1 = (unsigned __int64 *) malloc(sizeof(fp1));

이 부분은 완전 잘못된 코드 이고,
소스 전체가 잘못 구성 되었으므로 다시 생각해 보셔야 겠네요..

* sizeof(fp1) 가 파일 크기를 나타내거나 하지는 않습니다.