博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下的文件操作之文件复制
阅读量:3782 次
发布时间:2019-05-22

本文共 1526 字,大约阅读时间需要 5 分钟。

知识点提炼:

  1. open(const char *pathname,int flags)函数的使用,
    第一个参数为文件所在路径以及文件名,
    第二个参数为的打开文件的方式,有三种O_RDONLY.(只读),O_WRONLY(只写),O_RDWR(读写),以“|”连接添加新功能,常用功能 有O_APPEND(以追加的方式打开文件),O_CREAT(若无该文件,就创建文件)
  2. main()函数参数的使用  main(int argc,char **argv)  
    argc代表参数的个数,
    argv为二级字符串指针,即为多个字符串数组,a也就是说,argv[0]代表其第一个参数,argv[1]代表其第二个参数,arg[2]代表其第三个参数,以此类推
  3. lseek()函数的使用,
    第一个参数为文件描述符,
    第二个参数为偏移量,
    第三个参数(SEEK_CUR,SEEK_SET,SEEK_END),返回值为当前位置到开头的字节数
    以下为实现文件复制的代码:
  4. #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/

你可能感兴趣的文章
SpringCloud Sleuth 分布式请求链路
查看>>
SpringCloud Alibaba Nacos 服务注册和配置中心
查看>>
poi读写Excel
查看>>
使用Security安全框架实现权限登录
查看>>
JDBC工具类 使用Durid连接池链接MySQL数据库
查看>>
ANSYS——模态提取方法简介
查看>>
ANSYS——初学路径之路径的定义、作用以及ansys路径模块GUI的操作解释
查看>>
ANSYS——网格划分的不同方法以及GUI模块的操作(自由网格、映射网格、扫掠、拖拉)
查看>>
ANSYS——命令流学习(材料属性设置、建模的命令流)
查看>>
ANSYS——杆单元简介与示例(含新版本2019版本杆实常数设置、ANSYS help的使用、单元列表使用的举例)
查看>>
ANSYS——后处理中单元表(ELEMENT table)的作用、创建、使用
查看>>
在VScode上配置golang的开发环境
查看>>
leetcode每日一题---680. 验证回文字符串 Ⅱ
查看>>
leetcode每日一题---15. 三数之和
查看>>
leetcode每日一题---面试题 16.18. 模式匹配
查看>>
地主的钱袋
查看>>
招新成绩统计
查看>>
webpack
查看>>
go部署
查看>>
配置swagger--go语言
查看>>