当前位置: 首页 > 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.dtcms.com/a/361614.html

相关文章:

  • PyTorch 实战(3)—— PyTorch vs. TensorFlow:深度学习框架的王者之争
  • 「日拱一码」075 机器学习——密度泛函理论DFT
  • 在 Unity 中调用腾讯云机器翻译
  • 命名空间级别应用 Pod 安全标准
  • 在 Ubuntu 24.04 LTS 上安装 SSH 并启用服务端实现远程连接
  • 别再刷屏console.log!JavaScript高级调试方法全攻略
  • Product Hunt 每日热榜 | 2025-08-30
  • C++“类吸血鬼幸存者”游戏制作的要点学习
  • IO_HW_9_1
  • 【零碎小知识点 】(二)Java基础与常用API编码实践
  • day2
  • 【STM32】中断软件分支处理( NVIC 和 GIC)
  • curl 介绍及使用教程
  • Kotlin 协程异步任务工具类:高效处理异步操作与超时控制
  • 构建共享新生态的智慧物流开源了
  • ClickHouse常见问题——ClickHouseKeeper配置listen_host后不生效
  • java设计模式一、单例模式
  • 查看LoRA 哪个适配器处于激活状态(67)
  • 【秋招笔试】2025.08.31小红书秋招笔试真题
  • 鸿蒙NEXT开发指南:Image、Video与Swiper组件全面解析
  • Mac idea 格式化代码快捷键
  • 用滑动窗口与线性回归将音频信号转换为“Token”序列:一种简单的音频特征编码方法
  • 若依vue自定义发布环境部署后所有菜单无法点击
  • Kubernetes一网络组件概述
  • 如何正确使用ChatGPT做数学建模比赛——数学建模AI使用技巧
  • Sqlsugar补充自定义模板
  • 环境搭建汇总
  • 在.NET标准库中进行数据验证的方法
  • 【qwen3vsglm4.5】JavaScript 与浏览器事件分类
  • 垃圾渗滤液中镍超标怎么处理