第一种方法:例如 linux 下的系统调用

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>char buff[1024];
int len;
int main(int argc, char const *argv[])
{char const *src_path = argv[1];char const *des_path = argv[2];int fd,fd2;fd = open(src_path,O_RDWR|O_CREAT);fd2 = open(des_path,O_RDWR|O_CREAT);while(len = read(fd,buff,1024)){write(fd2,buff,len);}return 0;
}

这里主要 用到的函数是 open,read,write

其中open 函数:

第一个参数为要打开文件的路径,第二个参数是功能flag,O_RDWR表示以读写方式打开文件,O_CREAT表示如果文件不存在则创建

返回一个文件描述符,表示打开了的文件

其中 read 函数:

第一个参数是一个文件描述符,表示:从该文件描述符表示的文件读取数据

第二个参数是把从文件读到的信息放在一个缓冲数组中

第三个参数是读一次读多少字节

其中 write 函数:

第一个参数,是把数据写到哪里(写到哪个文件描述符中)

第二个参数:把缓冲数组中的数据写到文件描述符中

第三个参数:表示一次写多少字节

注意:最好向上面代码那样用一个while循环来读写数据,这样的话,read 中的第三个参数就不用设置成太大,因为他会把数据全读完才退出循环

第二种方法:用文件流

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>char buff[1024];
int len;
int main(int argc, char const *argv[])
{FILE *in,*out;char const * src_path = argv[1];    //要被拷贝的文件路径char const * des_path = argv[2];    //拷贝的文件放在哪里(路径)in = fopen(argv[1],"r+");out = fopen(argv[2],"w+");while(len = fread(buff,1,sizeof(buff),in)){fwrite(buff,1,len,out);}return 0;
}

两种方法其实有异曲同工之妙,第一种方法的文件描述符 = 第二种方法的文件流指针 in 和 out。

Linux C 两种方法实现复制拷贝文件相关推荐

  1. 两种方法上传本地文件到github

    自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...

  2. python安装模块的方法(两种方法,复制即可用)

    这里简单的介绍python安装模块的两种方法. 第一种 在pycharm中安装模块 我这里是因为已经安装了,所以会出现这个. # 安装模块 # pip install 模块名 # 可以指定安装版本 如 ...

  3. python两种方法读取、修改文件的创建时间、修改时间、访问时间

    看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在  ...

  4. 014day(h5的发展史,h5的兼容,h5的语法,h5的语义化,h5的常用标记,百分比下字体居中的两种方法,video视频文件,audio音频文件,

    一.h5的发展史 1.HTML5草案的前身名为 Web Applications 1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的 HTML 工作团队. HTML 5 的 ...

  5. linux用两种方法找到cuond,很基础的Linuxshell脚本学习.doc

    很基础的Linuxshell脚本学习 详细介绍Linux shell脚本基础学习(一) 2010-03-05 10:24 佚名 互联网 我要评论(9) 字号:T | T Linux shell脚本基础 ...

  6. uboot启动linux,uboot中ramdisk启动linux的两种方法

    首先要确保内核支持ramdisk启动: The configuration of the kernel is as follow: 1) General setup-->[*] Initial  ...

  7. C#读取资源文件的两种方法及保存资源文件到本地

    方法1 GetManifestResourceStream VB.NET中资源的名称为:项目默认命名空间.资源文件名 C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名  例如: istr = ...

  8. elf格式转换为hex格式文件的两种方法

    这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...

  9. elf格式转换为hex格式文件的两种方法 1

    这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...

最新文章

  1. 股市币市:数据分析与交易所最新公告(20190228)
  2. 一个Bug,让我发现了Java界的.AJ(锥)!
  3. 怎么写遮罩层 css,css案例 - mask遮罩层的华丽写法
  4. 什么是逻辑分析仪?逻辑分析仪的参数、使用步骤和优势
  5. 全屏插件fullsizable.js失效???
  6. 云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式
  7. java私有方法单元测试_如何通过java反射的方式对java私有方法进行单元测试
  8. Scrapy分布式、去重增量爬虫的开发与设计
  9. JavaScript网页打印国际象棋棋盘
  10. 点云课程学习——点云结构与查找(一)
  11. 获取ftp服务器文件,ftp获取服务器文件
  12. 【龙芯1c库】封装gpio接口和使用示例
  13. 在VMware ESXi中使用固态硬盘
  14. AEJoy —— 详解 AE 如何将 png 序列帧导出为 SVGA 动画文件
  15. 机械结构day_13
  16. PMP思维导图—项目经理的角色
  17. 【文献心得】内存隔离技术研究现状调研
  18. 20220407——组合逻辑电路 3-8线译码器
  19. c语言中x10是什么意思啊,C语言笔记一(概念)
  20. 程序员苏享茂:怎样才能遇到对的人?

热门文章

  1. javaScript教程笔记(一)JS简史
  2. 使用HttpClient下载图片常用代码,以及下载失败原因
  3. Cytoscape Web 实现网络拓扑结构图
  4. springSecurity小试牛刀
  5. 深度学习DeepLearning
  6. 【闪电搜索算法】基于闪电搜索算法求解单目标优化问题matlab代码
  7. commit your changes or stash them before you can merge 解决方法
  8. 为什么电子邮件发送失败?电子邮件发送失败的原因及解决方法
  9. 11g ocm认证考试经历
  10. 关于Zoom连不了,明明别人可以连接,却提示会议号不存在