当前位置: 首页 > news >正文

8.1IO进程线程——文件IO函数

文章目录

  • 一、思维导图
  • 二、使用文件IO函数,实现文件的拷贝
    • myhead.h
    • 代码
    • 现象
  • 三、使用标准IO函数,实现图片的拷贝
    • 代码
    • 现象
  • 四、使用文件IO函数,计算文件的大小
    • 代码
    • 现象
  • 五、牛客网刷题

一、思维导图

在这里插入图片描述

二、使用文件IO函数,实现文件的拷贝

myhead.h

#ifndef __MYHEAD_H__
#define __MYHEAD_H__#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>#define ERR_MSG(msg) do{perror(msg);printf("%d\n",__LINE__);return -1;}while(0)
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#endif

代码

#include <myhead.h>
int main(int argc, const char *argv[])
{//文件IO实现文件拷贝umask(0);//打开要下载的文件int fd_r=open("./myfile",O_RDONLY);if(fd_r==-1){ERR_MSG("open fd_r error");}//打开要下载到的文件int fd_w=open("./file",O_RDWR | O_CREAT | O_TRUNC,0774);if(fd_w==-1){ERR_MSG("open fd_w error");}//读取下载文件的内容char buf[128]="";if(-1==read(fd_r,buf,sizeof(buf))){ERR_MSG("read error");}//将读取到的内容下载if(-1==write(fd_w,buf,strlen(buf))){ERR_MSG("write error");}//关闭文件close(fd_r);close(fd_w);return 0;
}

现象

在这里插入图片描述

三、使用标准IO函数,实现图片的拷贝

代码

#include <myhead.h>
int main(int argc, const char *argv[])
{FILE *fp_1=fopen("./1.png","r");if(fp_1==NULL){ERR_MSG("fopen myfile_1 error");return -1;}char arr[4096];FILE *fp_2=fopen("./2.png","w");if(fp_2==NULL){ERR_MSG("fopen myfile_2 error");return -1;}ssize_t size;while((size=fread(arr,1,4096,fp_1))>0){fwrite(arr,1,4096,fp_2);}fclose(fp_1);fclose(fp_2);return 0;
}

现象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、使用文件IO函数,计算文件的大小

代码

#include <myhead.h>
int main(int argc, const char *argv[])
{//文件IO实现文件拷贝umask(0);//打开文件int fd_r=open("./myfile",O_RDONLY);if(fd_r==-1){ERR_MSG("open fd_r error");}//读取文件的内容并计算长度char buf[128]="";int size;while(1){ssize_t set=read(fd_r,buf,sizeof(buf));if(set==-1){ERR_MSG("read error");}else if(set==0){printf("The end of the file has been reached\n");break;}size+=strlen(buf);}printf("%d\n",size);//关闭文件close(fd_r);return 0;
}

现象

The end of the file has been reached
32

五、牛客网刷题

在这里插入图片描述

http://www.dtcms.com/a/310222.html

相关文章:

  • S7-1200 /1500 PLC 进阶技巧:组织块(OB1、OB10)理论到实战
  • 代码随想录day52图论3
  • ReAct模式深度解析:构建具备推理能力的AI智能体架构
  • 日志归档存储策略在海外云服务器环境的容量规划方法
  • 2508C++,奇怪的保留值
  • Qt deleteLater 延迟删除原理
  • 逻辑回归召回率优化方案
  • 第15讲——微分方程
  • 云服务器涉及的应用场景
  • 将本地commit已经push到orgin后如何操作
  • 应用Builder模式在C++中进行复杂对象构建
  • 梦幻接球 - 柔和色彩反弹小游戏
  • c#保留小数点后几位 和 保留有效数字
  • ctfshow_web签到题
  • LS-DYNA 分析任务耗时长,企业如何科学提升许可证使用效率?
  • 编程算法:驱动技术创新与业务增长
  • 丝杆支撑座在电子装配中的关键作用
  • 退出python的base环境
  • 基于STM32的数控机床物联网改造研究
  • 大模型应用
  • Flowable BPMN:智能流程自动化技术全面指南
  • Linux基础服务(DNS和DHCP)
  • 安卓开发--RelativeLayout(相对布局)
  • 数论:卢卡斯定理
  • 计算机网络:组播和多播有什么区别?
  • ESD监控系统确保工厂生产设备的静电安全
  • 机试备考笔记 1/31
  • 【科普】怎么理解Modbus、TCP、UDP
  • JavaWeb笔记2-JavaScriptVueAjax
  • MATLAB的三维重建系统