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

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.dtcms.com/a/362294.html

相关文章:

  • 大模型RAG项目实战:文本向量模型>Embedding模型、Reranker模型以及ColBERT模型
  • nCode 后处理常见问题汇总
  • 生成知识图谱与技能树的工具指南:PlantUML、Mermaid 和 D3.js
  • 过拟合 正则化(L1,L2,Dropout)
  • linux内核 - 文件系统相关的几个概念介绍
  • Ceres学习笔记
  • 从理论到RTL,实战实现高可靠ECC校验(附完整开源代码/脚本)(3) RTL实现实战
  • 智慧班牌系统基于Java+Vue技术栈构建,实现教育信息化综合管理。
  • ES6手录01-let与const
  • 2024 年 AI 技术全景图:大模型轻量化、多模态融合如何重塑产业边界?
  • c#:抽象类中的方法
  • Windows 使用 Compass 访问MongoDb
  • 笔记:现代操作系统:原理与实现(1)
  • 利用本地电脑上的MobaXterm连接虚拟机上的Ubuntu
  • 【Python知识】Playwright for Python 脚本录制指南
  • Nature Communications发布智能光电探测研究:实现0.3-1.1 THz波段强度-偏振-频率连续高维感知
  • 第7.6节:awk语言 break 语句
  • 刷题日记0901
  • 动态代理设计模式
  • 从Redisson分布式锁看锁的设计思路
  • 自动化运维-ansible中的变量运用
  • LeetCode Hot 100 Python (61~70)
  • 芯片的可编程字
  • Ps画笔和橡皮擦工具
  • 分布式事务相关02
  • 国内服务器如何安装docker或者是1panel
  • 关闭页面强制清除所有循环定时器
  • Linux 进程间通信(IPC)
  • Android14 init.rc各个阶段的主要操作
  • authentication port-control auto 和 dot1x port-control auto