本文共 1526 字,大约阅读时间需要 5 分钟。
知识点提炼:
#include#include #include #include #include #include #include #define BUFFER_SIZE 15//文件复制int main(int argc,char **argv){ int from_fd ,to_fd; int file_len=0;//记录文件的长度 int ret=1;//记录读文件的字节数 char buffer[BUFFER_SIZE]; if(argc !=3)//参数个数 { printf("argc not enough\n"); exit(0); } if((from_fd=open(argv[1],O_RDONLY|O_CREAT))==-1) { printf("open %s failed\n",argv[1]); exit(0); } if((to_fd=open(argv[2],O_WRONLY|O_CREAT))==0) { printf("open %s failed\n",argv[2]); exit(0); } //lseek的使用 file_len=lseek(from_fd,0,SEEK_END);//读出文件行数 lseek(from_fd,0,SEEK_SET);//将文件指针放回文件起始位置 printf("this file has %d bytes\n",file_len); //进行文件的复制 while(ret) { ret=read(from_fd,buffer,BUFFER_SIZE);//读文件中的内容 if(ret==-1) { printf("read error"); exit(1); } write(to_fd,buffer,ret);//将读到的数据写到文件里 file_len-=ret; bzero(buffer,BUFFER_SIZE);//清空缓冲区 } close(from_fd); close(to_fd); exit(0);}
编译以及测试代码
//编译文件gcc copy_file.c -o copy//执行文件sudo ./copy from.c to.c//测试文件//若文件内容相同则无输出sudo diff from.c to.c
注意:应保证from.c里有内容
转载地址:http://humvn.baihongyu.com/