#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <unistd.h>
// off_t lseek(int fd, off_t offset, int whence);
// ssize_t read(int fd, void *buf, size_t count);
int main(int argc,char **argv)
{
int fdSrc;
char *readBuf=NULL;
if(argc != 2){
printf("pararm error\n");
exit(-1);
}
fdSrc = open(argv[1],O_RDWR);
int size = lseek(fdSrc,0,SEEK_END);
printf("size =%d", size);
lseek(fdSrc,0,SEEK_SET);
readBuf = (char *)malloc(sizeof(char)*size + 8);
int n_read = read(fdSrc,readBuf,size);
char *p =strstr(readBuf,"LONG=");
if(p==NULL){
printf("not found\n");
exit(-1);
}
p=p+strlen("LONG=");
*p='9';
lseek(fdSrc,0,SEEK_SET);
int n_write = write(fdSrc,readBuf,size);
close(fdSrc);
return 0;
}
修改字符串
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <unistd.h>
// off_t lseek(int fd, off_t offset, int whence);
// ssize_t read(int fd, void *buf, size_t count);
struct Test
{
int a;
char c;
};
int main()
{
int fd;
struct Test data[2]={{100,'a'},{200,'b'}};
struct Test data2[2];
fd=open("./file1",O_RDWR);
int n_write = write(fd,&data,sizeof(struct Test)*2);
lseek(fd,0,SEEK_SET);
int n_read = read(fd,&data2,sizeof(struct Test)*2);
printf("read %d ,%c \n",data2[0].a,data[0].c);
printf("read %d ,%c \n",data2[1].a,data[1].c);
close(fd);
return 0;
}
~
~
~
~
~
写入数组