|
라모드 님이 쓰신 글 :
:
: 일반적은로 Ascii로 구성된 file 값은 중간에 NULL(0x00) 값이 없으므로 다음과 같이 사용해도 전혀문제가 없었는데 Binery file 을 읽으니 전혀 읽히지 않던지 중간에 끊기더라구요.
: Binery 로 된 file을 읽고 쓸때는는 어떻게 해야하나요?
: 제가 하고 싶은것은 binary file 을 읽어서 화일 앞부분에 header부와 뒷부분에 Checksum값을 AnsiString 상태에서 붙이려고 합니다.
:
: 고수님들의 도움 부탁드립니다. ~^^~
:
: FILE *fr;
: char buffer[1024];
: AnsiString AnsiBuffer;
:
: if((fr = fopen(FileListBox1->FileName.c_str(),"r")) == NULL) return;
: while(!feof(fr)) {
: if(fgets(buffer, sizeof(buffer), fr) == NULL) break;
: else
: {
: AnsiBuffer+=buffer;
: }
:
: }
: fclose(fr);
다른분들에게 좀 도움이 될까해서 제가 돌려보고 된것을 올려드립니다.
밑에처럼하니까 되더라구요.. 1바이트씩만 읽는데 더 큰단위로 읽어보려고 했는데 잘 안되서 그냥
이렇게 쓰고 있습니당.. ^^;
FILE *fr;
char buffer[1];
AnsiString AnsiBuffer;
unsigned short length,LegRead,LegCount;
if((fr = fopen(FileListBox1->FileName.c_str(),"rb")) == NULL) return;
fseek(fr, 0, SEEK_END);
length = ftell(fr);
fseek(fr, 0, SEEK_SET);
do
{
LegRead = fread(buffer,sizeof(char),1, fr);
AnsiBuffer+=char(buffer[0]);
LegCount=LegCount+LegRead;
} while (LegCount<length);
fclose(fr);
|