当前位置: 首页 > 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.xdnf.cn/news/1226881.html

相关文章:

  • Springboot 配置 doris 连接
  • LRU缓存淘汰算法的详细介绍与具体实现
  • VSCode Python 与 C++ 联合调试配置指南
  • 电商项目_性能优化_数据同步
  • Python day31
  • Implement recovery based on PITR using dump file and binlog
  • U-Net vs. 传统CNN:为什么医学图像分割需要跳过连接?
  • 使用gcc代替v语言的tcc编译器提高编译后二进制文件执行速度
  • 9.1无法恢复的错误与 panic!
  • 第二十三天(数据结构:链表补充【希尔表】)
  • golang的函数
  • 完整复现cacti的RCE
  • 机试01-C++基础语法与库函数
  • 大模型结构比较
  • python学智能算法(三十))|SVM-KKT条件的数学理解
  • 第七章 愿景12 小萍分享《人性的弱点》
  • WaitForSingleObject 函数参数影响及信号处理分析
  • C语言:20250801学习(构造类型)
  • JS-第十九天-事件(一)
  • 通过观看数百个外科手术视频课程来学习多模态表征|文献速递-医学影像算法文献分享
  • 从0开始学习R语言--Day64--决策树回归
  • 【2025/08/01】GitHub 今日热门项目
  • Android使用MediaProjectionManager获取游戏画面和投屏
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • TwinCAT3示例项目1
  • 探索 VMware 虚拟机:开启虚拟化世界的大门
  • 学习游戏制作记录(各种水晶能力以及多晶体)8.1
  • 新手小白如何快速检测IP 的好坏?
  • Vue2 项目实现 Gzip 压缩全攻略:从配置到部署避坑指南
  • 基于coze studio开源框架二次定制开发教程