2009년 03월 03일
win32 ftell() 사용시 주의사항.
무슨 디버깅 삽질을 별 것 아닌걸로 아주 거하게 했는데.
win32에서는 fopen() (혹은 _fopen()) 사용시 append, binary 모드를 옵션으로 열고,
바로 ftell()를 찍으면 파일의 끝 포지션이 아니라 첫 포지션이 나오는 현장을 목격.
이건 뭥미 싶어서 대강 보니까, MSDN ftell() function (CRT)에 다음 구절이 적혀있다.
"If no I/O operation has yet occurred on a file opened for appending, the file position is the beginning of the file."
당연히 두번째 파일을 다시 열 때는 정상적으로 마지막 포지션이 나올 것이다.
따라서, win32에서는 열고 난 뒤 닥치고 fseek(fp, 0, SEEK_END)를 써서 끝 포지션으로 옮겨줄 것.
덕분에 포팅했던 녀석에서 거하게 삽질해주셨음.
win32에서는 fopen() (혹은 _fopen()) 사용시 append, binary 모드를 옵션으로 열고,
바로 ftell()를 찍으면 파일의 끝 포지션이 아니라 첫 포지션이 나오는 현장을 목격.
이건 뭥미 싶어서 대강 보니까, MSDN ftell() function (CRT)에 다음 구절이 적혀있다.
"If no I/O operation has yet occurred on a file opened for appending, the file position is the beginning of the file."
당연히 두번째 파일을 다시 열 때는 정상적으로 마지막 포지션이 나올 것이다.
따라서, win32에서는 열고 난 뒤 닥치고 fseek(fp, 0, SEEK_END)를 써서 끝 포지션으로 옮겨줄 것.
덕분에 포팅했던 녀석에서 거하게 삽질해주셨음.
# by | 2009/03/03 21:58 | 트랙백 | 덧글(2)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]