한 걸음씩..

fputc(), fwrite() 사용할 때 0x0A 를 쓰게 되면... 본문

프로그래밍

fputc(), fwrite() 사용할 때 0x0A 를 쓰게 되면...

반엘 2013. 7. 15. 11:00

FILE*    pFile = NULL;

UCHAR    TestBuffer[5] = { 0xFF, 0x55, 0x0A, 0x00, 0x00 };

pFile = fopen( "C:\\Test.wav", "w" );

if ( pFile == NULL )

 {

    return 0;

}


fputc( TestBuffer[0], pFile );

fputc( TestBuffer[1], pFile );

fputc( TestBuffer[2], pFile );

fputc( TestBuffer[3], pFile );

fputc( TestBuffer[4], pFile );

        

 fclose( pFile );



위와 같은 예제를 돌려 봤을 때 wav 파일의 내부에 아래와 같은 데이터가 기록된다.

 

0xFF, 0x55, 0x0D, 0x0A, 0x00, 0x00


분명 5바이트를 기록했는데도 6바이트가 만들어 졌으며 0x0A 앞에 0x0D 가 붙게 되는 이상한 현상!!!!

 

이 현상은 fwirte 함수를 사용했을 때도 그대로 적용된다!  원인은.... 파일을 Text 모드로 열었기 때문이다


0x0D, 0x0A 는 >케리지 리턴, 라인피드 이기 때문이다


pFile = fopen( "C:\\Test.wav", "wb" );


위와 같이 바이너리 모드로 파일을 열게 되면 원하는 결과를 얻을 수 있을 것이다.