完全复制一个文件的内容到另外一个文件

思路解析:

首先我这里使用了三个.c文件,分别是:yanyu.c、yanyu_old.c、yanyu_now.c
其中yanyu.c负责将yanyu_old.c中的内容读入到buff缓冲区中,然后再从buff缓冲区中将数据写入到yanyu_now.c中,最终实现将yanyu_old.c中的内容复制到yanyu_now.c中。

具体实现如下:

首先将yanyu_old.c、yanyu_now.c两个文件分别打开,然后分别获取这两个文件的文件描述符。
再通过将yanyu_old.c中的内容通过read函数读入到buff缓冲区中;
之后判断read返回的读入缓冲区实际的字节数;如果实际的字节数等于零则表示读入完成;最后再依次通过write函数以此写入到yanyu_now.c文件中。最终首先复制的效果。

完整代码如下:

yanyu.c

#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main (){int fd_old = open("./yanyu_old.c",O_RDWR);//打开文件,获取其文件描述符int fd_now = open("./yanyu_now.c",O_RDWR);//打开文件,获取其文件描述符if(fd_old < 0 || fd_now < 0){//如果其文件描述符为负,则打开失败perror("open");return -1;}printf("open seccessful\n");//否则输出提示打开成功信息char buff[100]={0};//定义一个字符数据充当缓冲区int write_buff_to_now;//用于接收从buff写入yanyunow.c中的字符数据大小int read_buff = read(fd_old,buff,sizeof(buff));//获取从yanyu_old.c读入buff中的实际值while(read_buff != 0){//如果读入的实际字符不为零,执行写入操作if(read_buff < 0 ){perror("read");return -1;}write_buff_to_now = write(fd_now,buff,read_buff);//从buff写入到yanyunow.c中read_buff = read(fd_old,buff,sizeof(buff));//再依此从yanyuold.c中将字符读入到buff中if(write_buff_to_now < 0 ){//写入失败perror("write");return -1;} }int close_old = close(fd_old);//一开始打开了文件,使用完成之后需要关闭文件int close_now = close(fd_now);//一开始打开了文件,使用完成之后需要关闭文件if(close_old < 0 || close_now <0){//关闭文件失败,提示错误信息并结束perror("close");return -1;}printf("close successful\n");//成功关闭文件return 0;
}

yanyu_old.c

随便写就行,反正最后会通过执行yanyu.c文件,将这里的内容全部复制到yanyu_now.c里面的

yanyu_now.c

//这里为空,啥也不需要,到时候执行yanyu.c之后会将yanyu_old.c里面的内容给复制过来。

运行之前:
yanyu_old.c

yanyu_now.c

运行之后:
yanyu_now.c

嵌入式实训-day1相关推荐

  1. linux嵌入式开发板实训心得,嵌入式实训心得体会.docx

    嵌入式实训心得体会 嵌入式实训心得体会 篇一:嵌入式心得体会 这学期才接触嵌入式系统感觉还称不上入门,我通过学习知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃. 广义上讲,凡 ...

  2. Android新闻客户端实训-Day1类Day2接口基操

    结束了一些事情,本以为可以好好玩一段时间,结果紧接着又来了Android实训,因为这个实训已经开了一段时间了,我中途加入已经不赶趟了,但出于兴趣,准备今天开始跟着老师的笔记的源码从头开始自己摸索着学一 ...

  3. 嵌入式实训大纲 --上海怡胜信息科技有限公司

    嵌入式Linux智能实训大纲 一.  什么是嵌入式 通俗理解,把计算机嵌入到各种设备中,如机械控制设备.汽车控制设备.航天设备.环境监测设备.家电设备等,并且通过计算机来控制设备完成自动化.智能化的操 ...

  4. python实训day1

    今日作业: name=' aleX' print(name) print(name.strip()) print(name.startswith('al')) print(name.endswith( ...

  5. 7.3 嵌入式实训学习的第一天

    目录 嵌入式底层开发为啥选择C语言 什么是实时性?什么是硬实时?什么是软实时? LINUX和UNIX之间的关系 linux主流的发行版有哪些及其特点? 有哪些虚拟机软件及其特点? 解决userdel无 ...

  6. 苏嵌实训——day1

    文章目录 一.概述 二.Linux 三.linux的系统的层次 四.linux目录结构 五.命令行提示符的介绍 六.linux的基本命令 6.1 ls命令 6.2 chmod命令 6.3 cd 命令 ...

  7. 华北科技学院 嵌入式实训知识点

    文章目录 gcc编译器 裸机开发 系统移植 红绿蓝交替 呼吸灯 ADC 电阻变灯 系统移植搭建 开发板启动流程 驱动 驱动在系统中的层次 内核模块的三要素 驱动相关命令 驱动中的打印函数 驱动的不当操 ...

  8. python实操培训_python实训day1

    作业: # (1)移除name变量对应的值两边的空格 name =" aleX" print(name.strip()) # (2)判断name变量对应的值是否以"al& ...

  9. Python—实训day1—语法

    1 Python基础语法简介 1.1 每行的最后一个字符 C/C++/Java中每行的最后都需要加上分号 Python中每行的最后都不需要加上分号 1.2 数据类型 C语言中的数据类型: short. ...

最新文章

  1. 18香警告:一个女生勿近的邪恶开源项目...
  2. 机器学习实战:支持向量机
  3. Repeater 得到checkbox值
  4. RxSwift 之官方文档
  5. [再寄小读者之数学篇](2014-11-14 矩阵的应用: 多项式)
  6. 华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...
  7. ubantu下清除项目缓存的方法
  8. Vue中 引入外部字体并使用
  9. 做软件项目经理需要具备的品质和素质
  10. 阿里巴巴最新分销模式淘易客分销
  11. k8s教程(pod篇)-污点与容忍
  12. 2021最新申请苹果的公司开发者账号
  13. 因数据造假,奔驰、日产、保时捷被韩国环境部处以重罚
  14. LeetCode题解系列--309. Best Time to Buy and Sell Stock with Cooldown
  15. 以太坊合并升级全面解读:初级篇
  16. python--Django 01 安装以及初识Django项目开发
  17. 2.配置文件 setting.py
  18. 龙族幻想服务器维护多长时间,【龙族幻想】12月31日维护公告
  19. 大华服务器装系统,大华车载监控系统工程安装指导书(完整版).pdf
  20. HTML5移动游戏开发高级编程 2:从玩具到游戏

热门文章

  1. exp导出excel oracle_如何从Oracle快速导出数据到Excel
  2. java导出highcharts_Highcharts导出代码Java版
  3. jquery简介 each遍历 prop attr
  4. 玩转Jquery中的动画效果(animate方法)
  5. idiom的学习笔记(一)、三栏布局
  6. HDU1166-敌兵布阵
  7. Gradle Introduction
  8. Dumb Bones UVA - 10529(概率dp)
  9. POJ1789-Truck History .
  10. Ajax和Jsonp实践