嵌入式实训-day1
完全复制一个文件的内容到另外一个文件
思路解析:
首先我这里使用了三个.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相关推荐
- linux嵌入式开发板实训心得,嵌入式实训心得体会.docx
嵌入式实训心得体会 嵌入式实训心得体会 篇一:嵌入式心得体会 这学期才接触嵌入式系统感觉还称不上入门,我通过学习知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃. 广义上讲,凡 ...
- Android新闻客户端实训-Day1类Day2接口基操
结束了一些事情,本以为可以好好玩一段时间,结果紧接着又来了Android实训,因为这个实训已经开了一段时间了,我中途加入已经不赶趟了,但出于兴趣,准备今天开始跟着老师的笔记的源码从头开始自己摸索着学一 ...
- 嵌入式实训大纲 --上海怡胜信息科技有限公司
嵌入式Linux智能实训大纲 一. 什么是嵌入式 通俗理解,把计算机嵌入到各种设备中,如机械控制设备.汽车控制设备.航天设备.环境监测设备.家电设备等,并且通过计算机来控制设备完成自动化.智能化的操 ...
- python实训day1
今日作业: name=' aleX' print(name) print(name.strip()) print(name.startswith('al')) print(name.endswith( ...
- 7.3 嵌入式实训学习的第一天
目录 嵌入式底层开发为啥选择C语言 什么是实时性?什么是硬实时?什么是软实时? LINUX和UNIX之间的关系 linux主流的发行版有哪些及其特点? 有哪些虚拟机软件及其特点? 解决userdel无 ...
- 苏嵌实训——day1
文章目录 一.概述 二.Linux 三.linux的系统的层次 四.linux目录结构 五.命令行提示符的介绍 六.linux的基本命令 6.1 ls命令 6.2 chmod命令 6.3 cd 命令 ...
- 华北科技学院 嵌入式实训知识点
文章目录 gcc编译器 裸机开发 系统移植 红绿蓝交替 呼吸灯 ADC 电阻变灯 系统移植搭建 开发板启动流程 驱动 驱动在系统中的层次 内核模块的三要素 驱动相关命令 驱动中的打印函数 驱动的不当操 ...
- python实操培训_python实训day1
作业: # (1)移除name变量对应的值两边的空格 name =" aleX" print(name.strip()) # (2)判断name变量对应的值是否以"al& ...
- Python—实训day1—语法
1 Python基础语法简介 1.1 每行的最后一个字符 C/C++/Java中每行的最后都需要加上分号 Python中每行的最后都不需要加上分号 1.2 数据类型 C语言中的数据类型: short. ...
最新文章
- 18香警告:一个女生勿近的邪恶开源项目...
- 机器学习实战:支持向量机
- Repeater 得到checkbox值
- RxSwift 之官方文档
- [再寄小读者之数学篇](2014-11-14 矩阵的应用: 多项式)
- 华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...
- ubantu下清除项目缓存的方法
- Vue中 引入外部字体并使用
- 做软件项目经理需要具备的品质和素质
- 阿里巴巴最新分销模式淘易客分销
- k8s教程(pod篇)-污点与容忍
- 2021最新申请苹果的公司开发者账号
- 因数据造假,奔驰、日产、保时捷被韩国环境部处以重罚
- LeetCode题解系列--309. Best Time to Buy and Sell Stock with Cooldown
- 以太坊合并升级全面解读:初级篇
- python--Django 01 安装以及初识Django项目开发
- 2.配置文件 setting.py
- 龙族幻想服务器维护多长时间,【龙族幻想】12月31日维护公告
- 大华服务器装系统,大华车载监控系统工程安装指导书(完整版).pdf
- HTML5移动游戏开发高级编程 2:从玩具到游戏