유니코드 문서에서 문자의 수를 offset으로 사용하는 fseek는 없는지요?

dltkddyd의 이미지

유니코드 문서의 변환코드가 무엇이든(utf8, utf16, utf32에 상관없이) 상관없이 파일을 다루는 프로그램을 만들고 있습니다. 파일을 읽어 제대로된 코드로 인식하도록 하는 함수는 만들었는데요. 읽다가 문서 뒤로 이동하고 싶을 때 사용할 수 있는 fseek 함수의 offset는 단지 1 바이트 단위만 허용합니다. 한글과 영어가 뒤섞인 utf8 문서에서 한 문자를 뒤로 이동하고 싶은데, 이 문자 단위를 offset으로 사용하고 싶습니다. 예컨대 문서가

ab지붕에는 cd가 있다

라는 내용의 문서에서 현재의 파일에 대한 위치 지정자가 '가'를 가리키고 있고, '지' 글자가 있는 위치로 이동할 때 7자를 offset으로 해서 '지'자로 이동할 수 있는 방법이 없을까요?

fseek(fp,-7,SEEK_CUR);

이라고 했을 때 '지'자로 이동할 수 없을지 궁금합니다. 혹시 없다면 문자 수만큼 이동할 수 있는 함수를 무엇으로 만들어야 하나요? 저수준 차원에서 만들어야 하는 것인지요? 뭐, 그러니까, 매크로 함수로 구현을 해야하는 것일가요? 그랬을 때 파일 포인터와 같은 자원은 어떻게 전달하고 회수할 수 있는지도 궁금합니다.

Prentice의 이미지