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

9.1日IO作业

1、使用fread、fwrite实现两个文件的拷贝

#include <myhead.h>
int main(int argc, const char *argv[])
{//打开文件 (标准IO)FILE* fp=NULL;fp=fopen("ready.txt","r");if(fp==NULL){printf("文件打开失败!\n");return -1;}//待写入文件FILE* fp1=NULL;fp1=fopen("wait.txt","w");if(fp1==NULL){printf("文件打开失败!\n");return -1;}//定义字符串读取文件内容char buf[128]="";//循环读取文件内容,直到读完while(1){int i=fread(buf,1,sizeof(buf),fp);if(i<128){ if(feof(fp)){fwrite(buf,1,i,fp1);break;}if(ferror(fp)){printf("fread操作失败!\n");return -1;}}fwrite(buf,1,i,fp1);}printf("拷贝完成\n");fclose(fp);return 0;
}

运行结果


2、使用fread、fwrite实现将一个文件中的所有数字写入到另一个新文件中

#include <myhead.h>
//定义函数用于筛选数字
void num(char *p,char *q,int len)
{int j=0;for(int i=0;i<len;i++){if(p[i]>='0'&&p[i]<='9'){q[j++]=p[i];}}q[j]='\0';
}int main(int argc, const char *argv[])
{//打开文件FILE* fp=NULL;if((fp=fopen("math.txt","r"))==NULL){printf("文件打开失败\n");return -1;}FILE* fp1=NULL;if((fp1=fopen("wait.txt","w"))==NULL){printf("文件打开失败\n");return -1;}//定义变量接收文档中内容char buf[128]="";//循环读取文档while(1){char arr[128]="";int i=fread(buf,1,sizeof(buf),fp);if(i<128){ if(feof(fp)){num(buf,arr,i);fwrite(arr,1,strlen(arr),fp1);break;}if(ferror(fp)){printf("fread操作失败!\n");return -1;}}num(buf,arr,i);fwrite(arr,1,strlen(arr),fp1);}printf("拷贝成功\n");fclose(fp);fclose(fp1);return 0;
}

运行结果


3、使用文件IO完成两个文件的拷贝

#include <myhead.h>
int main(int argc, const char *argv[])
{//打开两个文件int fd=-1,fd1=-1;if((fd=open("ready.txt",O_RDONLY))==-1){perror("打开失败\n");return -1;}if((fd1=open("wait.txt",O_WRONLY|O_CREAT|O_TRUNC,0664))==-1){perror("打开/创建失败\n");return -1;}//定义数组接收文件1内容char buf[128]="";//定义循环,循环读取写入内容while(1){int i=0;if((i=read(fd,buf,sizeof(buf)))<128){if(i==0){write(fd1,buf,i);printf("文件读取完毕!\n");break;}if(i==-1){printf("文件读取出错\n");printf("%s\n",strerror(errno));return -1;}}write(fd1,buf,i);}printf("拷贝成功\n");//关闭文件close(fd);close(fd1);return 0;
}

运行结果



4、 思维导图v


5、自己总结标准IO和文件IO的区别与联系

标准IO来自于C标准库,是对文件IO的一种封装,文件IO来自于操作系统的系统调用

标准IO可移植性高,文件IO可移植性低(依赖操作系统)

标准IO存在缓冲区,文件IO没有缓冲区

标准IO操作文件指针,文件IO操作文件描述符


6、牛客网刷题>=26

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

相关文章:

  • 2025年09月01日Github流行趋势
  • 99、23种设计模式之组合模式(8/23)
  • 09.《路由基础知识解析和实践》
  • 基于外部对照数据借用的临床试验统计分析方案设计与仿真研究
  • PitVis-2023挑战赛:内镜下垂体瘤手术视频中的手术流程识别|文献速递-深度学习人工智能医疗图像
  • 如何把指定阿里云文件夹下的所有文件移动到另一个文件夹下,移动文件时把文件名称(不包括文件后缀)进行md5编码
  • 从理论到实践,深入剖析数据库水平拆分的安全平滑落地
  • Spark自定义累加器实现高效WordCount
  • Spark和Spring整合处理离线数据
  • promptoMANIA-AI绘画提示词生成器
  • Electron使用WebAssembly实现CRC-16 CCITT校验
  • macOS中Homebrew安装PHP的详细步骤(五)
  • 深入了解Flink核心:Slot资源管理机制
  • PostgreSQL 索引大全
  • 深入理解Docker容器技术:原理与实践
  • 如何安装CUDA????
  • three.js+WebGL踩坑经验合集(10.1):镜像问题又一坑——THREE.InstancedMesh的正反面显示问题
  • 机器学习-时序预测2
  • 基于FPGA+DSP数据采集处理平台的搭建
  • 【Vue2 ✨】Vue2 入门之旅(四):生命周期钩子
  • Unity核心概念③:Inspector窗口可编辑变量
  • C++/QT day3(9.1)
  • 深度学习中常用的激活函数
  • 关系型数据库——GaussDB的简单学习
  • Spring Boot 和 Spring Cloud 的原理和区别
  • 对于牛客网—语言学习篇—编程初学者入门训练—复合类型:BC141 井字棋及BC142 扫雷题目的解析
  • Composefile配置
  • 瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略
  • 查看LoRA 哪个适配器处于激活状态(67)
  • 单片机元件学习