Linux的lseek函数用来控制一个打开的
文件的
读写位置,它的函数原型如下:off_t lseek(int fildes,off_t offset ,int whence)参数的用法:fildes参数为一个已打开的文件描述符;参数offset为读写
位置的位移数,这个位移数是根据参数whence来确定的;whence参数分为下列三种:SEEK_SET:表示offset用来直接设置读写位置。SEEK_CUR:表示以目前的读写位置往后增加offset个位移量。SEEK_END:表示将读写位置指向文件尾后再增加offset个位移量。当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值出现。当lseek调用成功时返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno会存放错误代码。下面是几个使用示例:将读写位置移到文件开头:lseek(myfile, 0, SEEK_SET)将读写位置移到文件尾:lseek(myfile, 0, SEEK_END)想要取得目前文件位置:off_t cur=lseek(myfile, 0, SEEK_CUR)注意:使用lseek函数需要包含以下头文件:#include <sys/types.h>#include <unistd.h>其实试试就行了。
lseek() 就是把当前文件描述符的位置设到哪里,然后读写就从哪里开始了<在正常情况下>。
而你所考虑的,其实已经与seek无关了。
写个最简单的demo:
一个文件里有 abcd 四个字母。然后你直接open()找个文件,然后在文件的开头<0偏移处>,写一个r字母进去。然后保存。再然后读取看看,是只有r 呢? 还是rbcd呢? 还是rabcd呢?
-------------
假设已经存在一个 text.txt 文件,里面有 "abcd".
open(text.txt)
write()<一个字节的 r>
close()
--------------
open(text.txt)
read()
printf()
close()
-------------
评论列表(0条)