fstream 출력 write 에 관한 질문입니다.

kknd345의 이미지

void ManageFile::save( char* pBlock, int blockIndex )
{
FS.seekp( BLOCK_SIZE*blockIndex, ios::beg );
FS.write( pBlock, BLOCK_SIZE );
}

위 함수를 만들고요

fstream FS; // 파일 IN, OUT 스트림

// FS.open( fileName, ios::nocreate | ios::in | ios::out | ios::binary );

FS.open( fileName, ios::nocreate | ios::in | ios::out );

// 파일의 첫 생성 //

if(!FS) {

// FS.open( fileName, ios::in | ios::out | ios::trunc | ios::binary );

FS.open( fileName, ios::in | ios::out | ios::trunc );

fileSize=0;

totalBlock=0;

curBlock=0;

first = true;

}

// 파일 로드 했을 때 //

else{

FS.seekg(0,ios::end);

fileSize = FS.tellg();

totalBlock = (int)(fileSize/BLOCK_SIZE)+1;

curBlock=0;

first = false;

FS.seekg(0,ios::beg);

}

처음에 파일이 없을 경우를 생각해 이런식으로 생성을 했는데요.

초반에 buffer에 내용을 채워서

save ( buffer, 0 ); 을 호출했는데
분명히 save함수는 호출됩니다. 즉 FS.write( pBlock, BLOCK_SIZE );가 실행되었음에도
파일에는 아무것도 적히지가 않습니다. (스페이스 조차 없네요...) 내용 없는 파일만 생성됩니다;;;

write함수를 아무내용도 없는 곳에는 못 쓰나요? 아니면 다른 이유 때문인가요???

파일 스트림을 이용한 buffer 내용을 파일에 쓰는 방법은 없을까요?
char buffer[4096]이 한꺼번에 파일로 넘어가야 하기 떄문에;;
<< operator는 쓰는건 막막하네요;; (버퍼안에 null 문자가 있을수도 있는 관계로 더;;; )