C语言文件与目录(三)

文件读写位置的移动:每一个已打开的文件都有一个读写位置。当打开文件时通常读写位置是指向文件开头,若是以附加的方式打开文件,则读写位置会指向文件末尾。read或write函数读写文件时,读写位置会随相应移动。可以用lseek函数在文件内容中的位置上面移动,这样就可以在文件中不同的位置进行上读写。这个函数的使用方法如下所示。
01 off_t lseek(int fd,off_t offset ,int whence);
在参数列表中,fd表示用open函数打开的文件返回编号。参数offset是根据参数whence来移动读写位置的位移数。whence为系统定义的常量,可能有下面这些可能赋值。
SEEK_SET:参数offset即为新的读写位置。
SEEK_CUR:以目前的读写位置往后增加offset个位移量。
SEEK_END:将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值的出现。这时表示在当前位置上向前移动若干个字节。下面是一些常用的文件位置移动方式。
lseek(int fd,0,SEEK_SET):将读写位置移到文件开头。
lseek(int fd,0,SEEK_END):将读写位置移到文件结尾。
lseek(int fd,0,SEEK_CUR):取得当前的文件位置。
函数调用成功时返回这个文件当前的读写位置,即距文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。这个函数可能产生的错误代码如下所示。
EBADF:传入的参数不是一个已经打开的文件。
EINVAL:给入的whence参数不合理。
EOVERFLOW:给入的移动参数导致文件头指针指向了文件头以前,产生了溢出错误。
要使用这个函数,需要在程序的前面包含下面的头文件。
#include<sys/types.h>
#include<unistd.h>  

int fd_file;
char file[255]="";
char file_buffer[1024];
strcat(strcpy(file,mainpath),"\\file.txt");
if((fd_file=open(file,O_RDONLY))==0)
{
	printf("%s\n",strerror(errno));
}
else
{
	read(fd_file,file_buffer,4);
	printf("%s\n",file_buffer);
	lseek(fd_file,0,SEEK_SET);
	read(fd_file,file_buffer,4);
	printf("%s\n",file_buffer);
	lseek(fd_file,-4,SEEK_CUR);
	read(fd_file,file_buffer,4);
	printf("%s\n",file_buffer);
	close(fd_file);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值