嵌入式第十七天!(文件IO)

文件IO:

标准IO和文件IO的区别:

    1. 标准IO是库函数,是对系统调用的封装

    2. 文件IO是系统调用,是Linux内核中的函数接口

    3. 标准IO是有缓存的

    4. 文件IO是没有缓存的

  1. 操作步骤:

        打开 -> 读/写 -> 关闭

  2. 打开文件(open):

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

    功能:打开文件并且获得文件描述符

    参数:

        pathname:要打开的文件名

        flags:标志位

O_RDONLY只读
O_WRONLY只写
O_RDWR读写
O_APPEND追加
O_ASYNC异步IO
O_CREAT文件不存在创建
O_TRUNC文件存在截断(清0)

        返回值:

            成功返回文件描述符(很小的非负整数)

            失败返回-1

        新生成的文件描述符总是为尚未使用的最小的非负整数

        0:stdin        1:stdout        2:stderr

  3. 关闭文件(close):

int close(int fd);

    功能:将fd对应的文件描述符关闭

  4. 读写(read/write)

    1. write

ssize_t write(int fd, const void *buf, size_t count);

    功能:向fd对应的文件中写入buf指向的count个字节

    参数:

        fd:文件描述符

        buf:写入数据空间首地址

        count:写入的字节数

    返回值:

        成功返回实际写入字节数

        失败返回-1

    2. read

ssize_t read(int fd, void *buf, size_t count);

    功能:从文件描述符fd对应的文件中读取count个字节存放到buf开始的空间中

    参数:

        fd:文件描述符

        buf:存放数据空间的首地址

        count:想要读取数据字节数

    返回值:

        成功返回实际读到的字节数

        失败返回-1

        读到文件末尾返回0

  作业:

        1. 利用read和write实现文件内容的拷贝(将src.jpg中的内容拷贝到dst.jpg文件中)

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(void)
{int fsrc = 0;int fdst = 0;char tmpbuff[4096] = {0};ssize_t nret = 0;fsrc = open("src.jpg", O_RDONLY);if(fsrc == -1){perror("fail to open");return -1;}fdst = open("dst.jpg", O_WRONLY | O_TRUNC | O_CREAT, 0664);if(fdst == -1){perror("fail to open");return -1;}while(1){nret = read(fsrc, tmpbuff, sizeof(tmpbuff));if(nret <= 0){break;}write(fdst, tmpbuff, nret);}close(fsrc);close(fdst);return 0;
}

        2.1028:人口普查

#include <stdio.h>
#include <string.h>struct old
{char name[32];int year;int mon;int day;
};int main(void)
{struct old od[100000];int N = 0;int i = 0;int ret = 0;int max = 0;int min = 0;scanf("%d", &N);if(N>100000){printf("intput error\n");return -1;}for(i = 0; i < N; i++){scanf("%s %d/%d/%d", od[i].name, &od[i].year, &od[i].mon, &od[i].day);}for(i = 0; i < N; i++){if(od[i].year >= 1814 && od[i].year <= 2014){if(od[i].year == 1814 && (od[i].mon < 9 || od[i].day < 6)){ret = ret;for (int j = i; j < N - 1; j++){strcpy(od[j].name, od[j + 1].name);od[j].year = od[j + 1].year;od[j].mon = od[j + 1].mon;od[j].day = od[j + 1].day;}i--;N--;}else if(od[i].year == 2014 && (od[i].mon > 9 || od[i].day > 6)){ret = ret;for (int j = i; j < N - 1; j++){strcpy(od[j].name, od[j + 1].name);od[j].year = od[j + 1].year;od[j].mon = od[j + 1].mon;od[j].day = od[j + 1].day;}i--;N--;}else{ret++;}}}for(i = 0; i < ret-1; i++){if(od[max].year < od[i].year){max = i;}if(od[max].year == od[i].year && od[max].mon < od[i].mon){max = i;}if(od[max].year == od[i].year && od[max].mon == od[i].mon && od[max].day < od[i].day){max = i;}if(od[min].year > od[i].year){min = i;}if(od[min].year == od[i].year && od[min].mon > od[i].mon){min = i;}if(od[min].year == od[i].year && od[min].mon == od[i].mon && od[min].day > od[i].day){min = i;}}printf("%d %s %s\n", ret, od[min].name, od[max].name);return 0;	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现精准扶贫管理系统项目【项目源码】

基于java的SSM框架实现精准扶贫管理系统演示 JSP技术介绍 JSP技术本身是一种脚本语言&#xff0c;但它的功能是十分强大的&#xff0c;因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时&#xff0c;它可以使显示逻辑和内容分开&#xff0c;这就极大的方便了用户的需…

⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战)

LCR 012. 寻找数组的中心下标 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为…

数据管理关键技术顶层设计

数据管理关键技术顶层设计 明仔 数据思考笔记 2023-12-27 07:36 广东 数据思考笔记 专注于数据架构&#xff0c;数据中台&#xff0c;数据治理的相关分享&#xff0c;寻求数据与业务的结合点。 13篇原创内容 公众号 数据治理65 数据治理 目录 上一篇企业数据资产管理解…

基于Java SSM框架实现生鲜食品o2o商城系统项目【项目源码+论文说明】

基于java的SSM框架实现生鲜食品o2o商城系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 生鲜食品o2o商城系统&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、用户…

Tomcat版本号泄露

1.问题描述 Tomcat报错页面泄漏Apache Tomcat/7.0.92相关版本号信息&#xff0c;是攻击者攻击的途径之一。因此实际当中建议去掉版本号信息。 2.测试过程 随便访问一个tomcat不存在的界面 http://127.0.0.1:8080/examples/mytest.jsp 3.解决办法 1.进入到tomcat/lib目录下&a…

预检请求:为跨域请求保驾护航(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

目录 1. 问题的提出 2. 问题解决 1. 问题的提出 今天通过一张像素为141 * 214&#xff0c;大小为426KB的svg格式的图片构造QGraphicsSvgItem对象&#xff0c;再通过Qt的Graphics View Framework框架&#xff0c;将QGraphicsSvgItem对象显示到场景视图上&#xff0c;代码如下&…

【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II

LeetCode685. 冗余连接 II 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该图由…

离线数仓(二)【用户行为日志采集平台搭建】

用户行为日志采集平台搭建 1、用户行为日志概述 用户行为日志的内容&#xff0c;主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式&#xff0c;有代…

CleanMyMacX需要付费吗?多少钱?有哪些新功能

CleanMyMac X是一个付费应用程序**&#xff0c;需要许可证或订阅来解锁所有功能。不过&#xff0c;CleanMyMac X提供免费试用版供您访问其有限的功能。在试用模式下&#xff0c;用户可以使用部分功能进行体验&#xff0c;但这并非完全免费&#xff0c;因为某些功能会受到限制。…

怎样才能使网页跳转更加顺畅和自然?

网页跳转是用户在使用网页时经常遇到的操作&#xff0c;一个好的跳转设计可以提升用户体验&#xff0c;提高用户满意度。然而&#xff0c;有些网页的跳转设计却常常给用户带来不好的体验&#xff0c;比如页面加载缓慢、跳转速度慢、页面卡顿等问题。那么&#xff0c;怎样才能使…

在SpringBoot中@PathVariable与@RequestParam的区别

PathVariable GetMapping("/{userId}")public R<User> getUserById(PathVariable Long userId) {return userService.getUserById(userId);} // 根据id获取一条数据 function getStudentDataByIdAndDisplayInput(id) {// 发送 AJAX 请求$.ajax({url: /dorm/st…

Elasticsearch:将 IT 智能和业务 KPI 与 AI 连接起来 - 房间里的大象

作者&#xff1a;Fermi Fang 大象寓言的智慧 在信息技术和商业领导力的交叉点&#xff0c;蒙眼人和大象的古老寓言提供了一个富有洞察力的类比。 这个故事起源于印度次大陆&#xff0c;讲述了六个蒙住眼睛的人第一次遇到大象的故事。 每个人触摸大象的不同部位 —— 侧面、象牙…

Vue3快速上手(八) toRefs和toRef的用法

顾名思义&#xff0c;toRef 就是将其转换为ref的一种实现。详细请看&#xff1a; 一、toRef 1.1 示例 <script langts setup name"toRefsAndtoRef"> // 引入reactive,toRef import { reactive, toRef } from vue // reactive包裹的数据即为响应式对象 let p…

第三篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:pyttsx3实现语音助手经典案例

传奇开心果短博文系列 系列短博文目录Python的文本和语音相互转换库技术点案例示例系列 短博文目录一、项目背景和目标二、雏形示例代码三、扩展思路介绍四、与其他库和API集成示例代码五、自定义语音示例代码六、多语言支持示例代码七、语音控制应用程序示例代码八、文本转语音…

机器人初识 —— 定制AI

一、机器人设计难点 波士顿动力设计的机器人&#xff0c;尤其是其人形机器人Atlas和四足机器人Spot等产品&#xff0c;在技术上面临多重难点&#xff1a; 1. **动态平衡与稳定性**&#xff1a;双足或四足机器人在运动时需要维持极高的动态平衡&#xff0c;特别是在不平坦地面…

LiveGBS流媒体平台GB/T28181功能-自定义收流端口区间30000至30249UDP端口TCP端区间配置及相关端口复用问题说明

LiveGBS自定义收流端口区间30000至30249UDP端口TCP端区间配置及相关端口复用问题说明 1、收流端口配置1.1、INI配置1.2、页面配置 2、相关问题3、最少可以开放多少端口3.1、端口复用3.2、配置最少端口如下 4、搭建GB28181视频直播平台 1、收流端口配置 1.1、INI配置 可在lives…

基于Java SSM框架实现电影售票系统项目【项目源码】

基于java的SSM框架实现电影售票系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring属于…

VNCTF2024misc方向部分wp

文章目录 sqlsharkLearnOpenGLez_msbOnlyLocalSql sqlshark tshark -r sqlshark.pcap -Y "http" -T fields -e frame.len -e http.file_data > data.txt不太像常规的盲注&#xff0c;一次性发送两条很类似的payload&#xff0c;比常规的多了一个least在判断passw…

如果端口显示被占用,无法重启,需要杀掉这些进程服务,再次重启即可

如果端口显示被占用&#xff0c;无法重启&#xff0c;需要杀掉这些进程服务&#xff0c;再次重启即可 jps显示当前有的服务 kill -9 要杀掉服务的对应数字