Linux文件编程之光标移动

  • Post author:
  • Post category:linux




Linux文件编程之光标移动

光标移动

#include <sys/types.h>
#include <unistd.h>   //需要包含的头文件
off_t lseek(int fd,off_t offset,int whence);  //函数原型
/*
函数返回值是光标移动的偏移量
fd:文件描述符
offset:光标的偏移量,为正数时向后移动,为负数时前后移动
whence:光标的位置
	参数有:SEEK_SET:文件头、SEEK_END:文件尾、SEEK_CUR:当前位置
*/

将文件中long的值改为5

代码

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char **argv)
{
	char *buf = NULL;
	if(argc != 2){
		printf("param error\n");
		exit(-1);
	}
	int fd = open(argv[1],O_RDWR);
	int size = lseek(fd,0,SEEK_END);
	buf = (char *)malloc(sizeof(char)*size+8);
	lseek(fd,0,SEEK_SET);
	int ret = read(fd,buf,size);
	printf("read:%d byte %s\n",ret,buf);
	char *p = strstr(buf,"long=");
	p = p+strlen("long=");
	*p = '5';
	lseek(fd,0,SEEK_SET);
	ret = write(fd,buf,strlen(buf));
	free(buf);
	close(fd);
	return 0;
}

运行结果

在这里插入图片描述



版权声明:本文为weixin_48990413原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。