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

IO进程线程;标准io;文件IO;0901

思维导图

标准IO,模块化读取 fread/fwrite实现文件拷贝

代码

#include<stdio.h>
#include<string.h>
int main(int argc,const char *argv[])
{char r[128]="";char w[128]="";strcpy(r,argv[1]);//主函数 外部传参strcpy(w,argv[2]);FILE *rfp=NULL;FILE *wfp=NULL;printf("r=%s\n",r);printf("w=%s\n",w);if((rfp=fopen(r,"r"))==NULL){perror("open file");//perror 可以输出 错误码 的 含义printf("打开源文件失败\n");return -1;}if((wfp=fopen(w,"w"))==NULL){perror("open file");//perror 可以输出 错误码 的 含义printf("打开目标文件失败\n");return -1;}//文件拷贝int res;char buff[]="";while(1){res=fread(buff,sizeof(buff),1,rfp);if(feof(rfp)){printf("读取到结尾\n");}if(ferror(rfp)){printf("读取错误\n");}//printf("res=%d\n",res);//fread的返回值 读取到了多少个//写入文件fwrite(buff,sizeof(buff),res,wfp);if (res<1){break;}}//关闭文件fclose(rfp);fclose(wfp);return 0;
}

运行情况

fread/fwrite拷贝文件中的数字 到 另一个文件

代码

#include<stdio.h>
#include<string.h>
int main(int argc,const char *argv[])
{char r[128]="";char w[128]="";strcpy(r,argv[1]);//主函数 外部传参strcpy(w,argv[2]);FILE *rfp=NULL;FILE *wfp=NULL;printf("r=%s\n",r);printf("w=%s\n",w);if((rfp=fopen(r,"r"))==NULL){perror("open file");//perror 可以输出 错误码 的 含义printf("打开源文件失败\n");return -1;}if((wfp=fopen(w,"w"))==NULL){perror("open file");//perror 可以输出 错误码 的 含义printf("打开目标文件失败\n");return -1;}//文件拷贝int res;char buff='\0';while(1){res=fread(&buff,sizeof(buff),1,rfp);if(feof(rfp)){printf("读取到结尾\n");}if(ferror(rfp)){printf("读取错误\n");}if(buff>='0'&&buff<='9')//判断 是数字{//写入文件fwrite(&buff,sizeof(buff),res,wfp);}if (res<1){break;}}//关闭文件fclose(rfp);fclose(wfp);return 0;
}

运行情况

文件IO实现文件的拷贝

代码

#include<myhead.h>
int main(int argc,const char *argv[])
{int rfd=-1;//源文件的 文件描述符int wfd=-1;//目标文件的 文件描述符char r[128]="";char w[128]="";strcpy(r,argv[1]);strcpy(w,argv[2]);if((rfd=open(r,O_RDONLY))==-1)//打开 源文件{perror("open file");return -1;}if((wfd=open(w,O_WRONLY|O_CREAT|O_TRUNC,0644))==-1)//创建 目标文件{perror("open file");return -1;}char buff;//读取 暂存的int res;while(1){res=read(rfd,&buff,1);//从rfd读取,写入到buffwrite(wfd,&buff,res);//写入 长度为 res个字符if(res<1)//判断 退出循环条件{break;}}close(rfd);close(wfd);return 0;
}

运行情况

文件IO和标准IO的区别

文件IO操作 文件描述符 ,无缓冲区,只能读取二进制,需要知道文件的格式并接受

标准IO操作 文件指针,有缓冲区,可以读取各种需要的格式

联系

都需要 操作文件的光标,

文件IO可以实现标准IO的全部功能,标准IO中fread和fwrite也可以实现文件IO的效果。

牛客

f

http://www.xdnf.cn/news/1420957.html

相关文章:

  • OPENCV 基于旋转矩阵 旋转Point2f
  • Python核心技术开发指南(030)——函数入门
  • PAT乙级_1093 字符串A+B_Python_AC解法_含疑难点
  • 基于 C 语言的网络单词查询系统设计与实现(客户端 + 服务器端)
  • Python OpenCV图像处理与深度学习:Python OpenCV特征检测入门
  • AI时代SEO关键词实战解析
  • Python3环境搭建教程 - 使用Conda工具
  • CGroup 资源控制组 + Docker 网络模式
  • 【并发场景问题】超卖、一人一单业务问题的解决方案
  • 大型语言模型监督微调(SFT)
  • openharmony之sandbox沙箱机制详解
  • K8S网络组件Calico深度解析
  • Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门
  • 深入解析 Go 程序逆向风险与防护策略
  • 如何对嵌入式软件进行单元测试
  • 无重复字符的最长子串,leetCode热题100,C++实现
  • Vue3响应式陷阱:如何避免ref解构导致的响应式丢失
  • 电动自行车车架前叉振动、组合件冲击、把立管弯曲强度试验机等机械强度性能测试项目解析
  • 【趣味阅读】Python 文件头的秘密:从编码声明到 Shebang
  • Spring事务管理策略对比与性能优化实践指南
  • AI辅助论文写作,在《人工智能生成合成内容标识办法》出台后的新规则
  • HarmonyOS 应用开发深度实践:深入 Stage 模型与 ArkTS 声明式 UI
  • Linux - JDK安装
  • 刷题之链表oj题目
  • 突破超强回归模型,高斯过程回归!
  • 大语言模型对齐
  • VMware pro16(许可证)+centos 7超详细安装教程
  • MQ使用场景分析
  • 【RK3576】【Android14】PMIC电源管理
  • DVWA靶场通关笔记-SQL Injection Blind(SQL盲注 Impossible级别)