برای خواندن و نوشتن دادهها به صورت تصادفی از این تابع استفاده میشود. این تابع اجازه میدهد که برنامهنویس روی اشارهگر موقعیت فایل، کنترل داشته باشد. از این رو با استفاده از این تابع، برای دستیابی به رکوردی از فایل، اشارهگر موقعیت فایل را به ابتدای رکورد مورد نظر انتقال میدهیم.
الگوی این تابع به صورت زیر است.
int fseek(FILE *fp , long int num_bytes , int origin) ;
در این الگو fp اشارهگر فایل است. پارامتر دوم، تعداد بایتهای مورد جستجو از مبدأ را مشخص میکند و پارامتر سوم یا origin محل جستجو در فایل را مشخص میکند که ممکن است یکی از ماکروهای زیر باشد.
کاربرد این تابع در مورد فایلهای باینری است، زیرا ترجمه کاراکترها در فایلهای متنی موجب بروز اشتباه در مکانها میشود.
مثال تابع زیر بایت شماره ۵۴ از فایلی به نام sample را میخواند.
readByte()
{
FILE *fp ;
if ((fp = fopen(“sample” , “rb”)) = = NULL)
{
printf(” can not open this file \n”) ;
exit(1) ;
}
fseek(fp , 54L , 0) ;
return getc(fp) ;
}
این تابع اگر با موفقیت عمل کند مقدار صفر را برمیگرداند در غیر این صورت مقداری غیر از صفر را برمیگرداند. همان طور که ملاحظه میکنید از توصیفکننده L برای نشان دادن مقدار long int استفاده شده است. دستور fseek اشارهگر فایل را در بایت شماره ۵۴ قرار میدهد. سپس در دستور خط بعد کاراکتر موجود در این محل از فایل با دستور getc خوانده و به تابع فراخواننده بازگردانده میشود. مقدار صفر استفاده شده در دستور fseek نشاندهنده ماکروی FSEEK_SET است.