PDA

View Full Version : معنی lseek



arashmidos2020
یک شنبه 08 آذر 1388, 06:21 صبح
سلام. دقیقا معنی lseek چیه؟ یک فایلی که نمی دونم حجمش چقدر هست رو چطوری باید read کنم؟
تو این کتاب من میگه واسه اینکه نمی دونیم حجم فایل چقدر از lseek استفاده کردیم اما من متوجه نمی شم چه کار کرده.
کسی می تونه یک مثال از lseek با توضیحش بزنه؟
ممنون

Nima_NF
یک شنبه 08 آذر 1388, 16:33 عصر
برای خواندن باینری فایل ها نیاز نیست که به ترتیب از باتدا شروع کنیم به خواندن. شما یک اشاره گر کنونی دارید، که با دستور read از همان جا می خوانید.

با استفاده از دستور lseek شما می توانید مکان اشاره گر را به دست آورید، مثلا با فلگ SEEK_END مکان انتهای فایل به شما داده می شود (همان تعداد بایت های کل فایل شما):




#include <io.h>


int fileh= open( "myfile.dat", _O_WRONLY | _O_CREAT, _S_IREAD | _S_IWRITE );

int pos = lseek( fileh, 0L, SEEK_END );

read( fileh, myStrBuffer, 100 );


مثلا بعد از دستور read فوق اشاره گر کنونی (فلگ SEEK_CUR در lseek) به بایت 100 منتقل می شود.