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 版权协议,转载请附上原文出处链接和本声明。