2GB を超えるファイルに対するシークは厄介なままでした.
ずいぶん前に,2GB を超えるファイルに対してシークをおこなうとき,fseek() の第二引数 offset が long(32bit)なおかげで苦労した記憶があります.
久しぶりに同じようなことをすることになり,何か良い方法はないものかと探してみたのですが,以前と状況はあまり変わっていないようです.
基本的には,fseeko64(), ftello64() を使ってみたり,あるいは _fseeki64(), _ftelli64() を使ってみたりすることになると思います.
ただし,環境によって関数,型,マクロと幅広く変化してしまうので,どうしても微妙な感じがします.