파일의 읽기 쓰기 포인터를 이동해 주는 함수가 lseek()입니다.

포인터를 이동하면 어디로 이동했는제 반환값으로 알려 줍니다.

예를 들어 lseek( fd, 0, SEEK_END)를 하면 파일의 끝 위치, 즉 파일의 크기를 알 수 있지요.

그래서 lseek() 값을 화면에 출력하기 위해 아래와 같이 printf()를 호출했습니다.


   printf( "offset=%d\n", lseek( fd, 0, SEEK_END));


문제는 컴파일 때 에러는 나지 않지만, 경고 메시지가 출력됩니다.


   main.c:25:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘off_t’ [-Wformat]


경고을 없애기 위해 결과 타입을 알아 보니 off_t 이네요.

그렇다면 과연 off_t는 printf()를 호출할 때 어떤 형으로 출력하게 해야 경고 메시지를 없앨 수 있을까요!

답은 %ld 입니다. 즉, off_t는 long 형 정수입니다.