write 往文本写入结构体数据 代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
struct test
{
char name[20];
int age;
char sex;
};
typedef struct test Test;
int main()
{
int fd,ret;
Test stu={"jack",20,'F'};
Test tmp;
fd=open("struct.txt",O_RDWR |O_CREAT|O_EXCL,0666);
if(-1==fd)
{
perror("open");
exit(1);
}
ret=write(fd,&stu,sizeof(Test));
if(-1==ret)
{
perror("write");
exit(1);
}
close(fd);
return 0;
}
read 从文本读取:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
int fd, ret;
char buf[100]={0};
fd=open("hello.txt",O_RDWR|O_CREAT,0666);
if(-1==fd)
{
perror("open");
exit(1);
}
ret=read(fd,buf,sizeof(buf));
if(-1==ret)
{
perror("read");
}
printf("read from txt:%s\n",buf);
close(fd);
return 0;
}
复制文本数据到另一个文本中(注意参数):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
if(argc!=3)
{
printf("ERROR!\n");
exit(1);
}
int fd[2]={0};
int ret;
char buf[70]={0};
fd[0]=open(argv[1],O_RDONLY);
if(fd[0]<0)
{
perror("open1");
exit(1);
}
fd[1]=open(argv[2],O_WRONLY|O_CREAT|O_EXCL,6667);
if(fd[1]<0)
{
perror("open2");
exit(1);
}
while((ret=read(fd[0],buf,sizeof(buf)))!=0)
{
ret=write(fd[1],buf,ret);
if(ret<0)
{
perror("write");
exit(1);
}
memset(buf,0,sizeof(buf));
}
return 0;
}