《每天一分钟学习C语言·四》文本读写操作及二进制读写

fopen(参数1,参数2),第一个参数是要打开的文件名,文件名字符串,第二个参数用于制定文件打开模式的一个字符串。
注:如果要打开某个盘的文本如F盘test文件夹下的test.txt文本,则fopen(“F:\test\test.txt”,”r”);
程序成功打开一个文件,fopen返回一个文件指针,FILE *fp=fopen(参数1,参数2) ,打开失败返回空,程序将退出
fclose(fp)关闭指针fp指定的文件,成功关闭返回0,否则返回EOF,结尾加上判定

if(fclose(fp)!=0)printf("关闭失败");

“r”:打开文本文件,读取
“w”:打开文本文件,写入,先将文件长度截取0,文件要不存在会先自动创建
“a”:打开文本文件,写入,向已有的文件尾部追加内容,文件要是不存在会先自动创建
“r+”:打开文本文件,可读可写
“w+”:打开文本文件,可读可写,先将文件长度截取0,文件要不存在会先自动创建
“a+”:打开文本文件,可读可写,向已有文件尾部追加内容,如果文件不存在先创建
“rb”,”wb”,”ab”,”ab+”,”a+b”,”wb+””w+b”,”ab+”,”a+b”以二进制模式而非文本模式打开文件
一个以二进制读写文本形式写的程序

案例:

#include<stdio.h>void main()
{FILE *f_picture,*f_rar,*f_swift;char pictureName[30],rarName[30],swift[60];printf("请输入文件名:(如:F:\\picture\\1.jpg)  ");scanf("%s",pictureName);printf("请输入另一个文件名:(如:F:\\2.RAR)  ");scanf("%s",rarName);printf("请输入您要合成的文件名:(如:F:\\3.jpg)");scanf("%s",swift);//判断图片和压缩文档以及swift转换器以二进制方式是否读写成功if(!(f_picture = fopen(pictureName,"rb")))  {printf("Can not read %s successfully!\n",pictureName);return;}if(!(f_rar = fopen(rarName,"rb"))){printf("Can not read %s successfully!\n",rarName);return;}if(!(f_swift = fopen(swift,"wb"))){printf("Can not read %s successfully!\n",swift);return;}//二进制读写只能以feof函数判断是否在文本结尾结束,非二进制文本读写可以用字符接收的值与EOF比较判断while(!(feof(f_picture))) //如果读到文件结尾返回非0,否则返回0{char ch;ch = fgetc(f_picture);fputc(ch, f_swift);}fclose(f_picture);while(!(feof(f_rar))){char ch;ch = fgetc(f_rar);fputc(ch,f_swift);}fclose(f_rar);fclose(f_swift);
}

fseek(指向被搜索文件的FILE指针,偏移量(long类型值),模式),一切正常函数返回0,否则返回-1
SEEK_SET 文件开始
SEEK_CUR 当前位置
SEEK_END 文件结尾
fseek(fp,0L,SEEK_SET); //找到文件开始处
fseek(fp,10L,SEEK_SET); //找到文件的第10个字节
fseek(fp,2L,SEEK_CUR); //文件当前位置向前移动两个字节
fseek(fp,0L,SEEK_END); //到达文件结尾处
fseek(fp,-10L,SEEK_SET); //从文件结尾处退回10个字节
ftell()函数为long类型 long len=ftell(fp); //把从文件开始到文件指针处的字节数赋给len
字符输入输出函数fgetc和fputc
fputc(ch,fp); //ch为定义的一个字符,fp为把ch这个字符写入到fp所指向的文件中去,若写入操作成功函数返回写入字符的ascii码,否则返回EOF

案例:

#include<stdio.h>void main()
{char ch,ch2;FILE *fp = fopen("test.txt","w+");  if(!fp)printf("打开失败!\n");elseprintf("打开成功\n");ch = getchar();while(ch!='\n'){putc(ch,fp);ch = getchar();}fclose(fp);}

char ch = fgetc(fp); 从打开的文件fp中读取一个字符并赋给ch
注:读取的文件必须是以读或读写的方式打开的。

案例:

#include<stdio.h>void main()
{char ch;FILE *fp = fopen("test.txt","r+");if(!fp)printf("打开失败!\n");elseprintf("打开成功\n");ch = fgetc(fp);while(ch!=EOF) //读到为本最后为返回EOF{putchar(ch);ch = fgetc(fp);  //fgetc函数每次读取一个字符指针会自动指向下一个字符地址}fclose(fp);
}

注:EOF不是可输出字符,因此不能再屏幕上显示,当读入的字符为-1时,表示读入的已不是正常的字符而是文件结束符。

字符串输入输出函数fputs和fgets
fgets(str,n,fp); //从fp指向的文件中读取n-1个字符送入字符数组str,因为最后要加’\0’,fp必须是读或者读写的方式打开文件指针,正常读取函数返回str首地址,读取失败返回null

案例:

#include<stdio.h>void main()
{char buffer[20];FILE *fp;if(!(fp=fopen("F:\test.txt","r")))  //F盘下的一个test.txt文本{printf("读取失败!\n");return;}fgets(buffer,20,fp);printf("%s\n",buffer);fclose(fp);
}

fputs(str,fp); //把str中的字符串写入到fp指向的文件中,直到遇到末尾的空字符。fp必须是以写,读写的方式写入,写入成功返回非负值,否则返回EOF。注:fputs(“\r\n”,fp); //用来在文本中换行

案例:

#include<stdio.h>void main()
{FILE *fp;char buffer[20];char ch;gets(buffer);if(!(fp=fopen("F:\test.txt","w+"))){printf("写入失败!\n");return;}fputs(buffer,fp);rewind(fp);  //重新定义文件内部指针到文件的开头,方便在后面获取文件每个字符时从头开始获取ch = fgetc(fp);while(ch != EOF)  //读到文本最后返回EOF{putchar(ch);ch = fgetc(fp);}fclose(fp);
}

feof函数用来判断是否到达文本结尾,如果没有到结尾返回0否则返回非0(二进制读写文本专用)

ch = getchar() //从标准输入中获得一个字符
ch = getc(fp); //从fp指定的文件中获得一个字符,读到文件结尾返回EOF
Putchar(ch); //从标准输出中输出一个字符
putc(ch, stdout); //从标准输出中输出一个字符
Putc(ch, fp); //把字符写入fp指向的文件

注意:在fopen里写路径需要\,如果通过scanf键盘输入路径只要\

fp = fopen(); //fopen返回指向文件的指针,返回失败返回NULL
fclose() //关闭成功返回0,否则返回EOF

fscanf(fp, “%s %d”, name, i); //从fp指向的文件读取%s %d给name和i
fscanf(stdin, “%s %d”, name, i); //从标准输入中输入name和i
fprintf(fp, “%s %d”, name, i); //%s %d这个字符串写入fp指向的文件
fprintf(stdout, “%s %d”, name, i); //从标准输出中输出字符串%s %d

二进制读写函数fread和fwrite
char buffer[256]; double earnings[10];
fwrite(buffer,256,1,fp); //将数组中的数据写入文件,数据分成1块,每块256字节大小
fwrite(earnings,sizeof(double),10,fp); //将数组中的数据写入文件,数据分成10块,每块都是double大小。(先将数组首地址的double类型大小数据写入fp,指针自动后移将earnings下一个地址double类型大小数据写入fp,…)
fwrite函数返回成功写入的项目数,正常情况与第三个参数相等,如果写入错误返回值会小于第三个参数

double earnings[10];
fread(earnings,sizeof(double),10,fp); //从fp指向的文件读取数据到earnings数组中,读取10块,每块是一个double类型的大小。(第一个double类型大小的数据读入earnings首地址,第二个double大小数据会自动读入earnings下一个地址,…)
fread函数返回成功读取得项目数,正常情况与第三个参数相等,如果读取错误返回值会小于第三个参数

fprintf(fp,”%d”,35); //把35一字符串的形式写入fp
fscanf(fp,”%s”,arr); //从fp内容以字符串的形式读入arr字符数组

rewind(fp)把文本指针置于文件开始处,为读取做好准备,很重要的一个函数

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AcWing算法进阶课-1.1.2Dinic/ISAP求最大流

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量&#xff0c;边的容量非负。 图中可能存在重边和自环。求从点 S S S 到点 T T T 的最大流。 输入格式 第一行包…

本地websocket服务端结合cpolar内网穿透实现公网访问

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

黑马头条--day07--app文章搜索

目录 一.安装elasticsearch 1.拉取镜像 2.创建存放数据及配置文件的文件夹&#xff0c;启动时挂载。 4.修改文件夹权限 5.启动容器 5.1参数解释 6.安装ik分词器 6.2测试一下Ik分词器 二.添加文章索引库 1查询所有的文章信息&#xff0c;批量导入到es索引库中 2)测试 …

深度盘点:除了BRC20外 这些公链潜力铭文也值得关注

近日的铭文市场风起云涌&#xff0c;除BRC20占据着市场70%以上的份额外&#xff0c;其他公链的铭文也在快速发展

Spring Boot + EasyUI 全屏布局(二)

一、创建一个Spring Boot EasyUI项目 Spring Boot EasyUI 创建第一个项目&#xff08;一&#xff09;_springboot整合easyui-CSDN博客 二、相关知识点总结 布局&#xff08;layout&#xff09;是有五个区域&#xff08;北区 north、南区 south、东区 east、西区 west 和中区…

Spring Boot学习随笔- 拦截器实现和配置(HandlerInterceptor、addInterceptors)、jar包部署和war包部署

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第十三章、拦截器 拦截器 &#xff1a;Interceptor 拦截 中断 类似于javaweb中的Filter&#xff0c;不过没有Filter那么强大 作用 Spring MVC的拦截器是一种用于在请求处理过程中进行预处理和后处理的机制。拦…

typeScript安装及TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法

一、typeScript安装&#xff1a; # 全局安装 TypeScript npm i -g typescript 二、检查是否安装成功ts&#xff1a; #检查ts的版本号 确定是否安装成功 tsc -v出现报错&#xff1a;‘tsc’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 解决&#xff1…

fastGitHub工具推荐(如果打不开github或者使用很慢可以使用该工具)

目录 一&#xff0c;针对问题二&#xff0c;下载1&#xff0c;github里面下载FastGitHub2&#xff0c;博客上传了下载资源 三&#xff0c;安装使用点击执行文件即可 一&#xff0c;针对问题 当使用github很慢&#xff0c;或者根本打不开的时候&#xff0c;就可以使用该工具 …

Java基础知识复习

目录 一、Java语言基础知识&#xff0c;包括面向对象编程、语法特性等 0、什么是面向对象编程&#xff1f; 1、基本语法&#xff1a; 2、变量和数据类型&#xff1a; 3、运算符和表达式&#xff1a; 4、控制结构&#xff1a; 5、函数和方法&#xff1a; 6、类和对象&#xff1a…

电商数仓项目----笔记五(数仓架构和建模)

ODS&#xff1a;数据源 DWD&#xff1a;加工数据 DWS&#xff1a;统计数据 ADS&#xff1a;分析数据 DIM&#xff1a; 维度层&#xff08;大家都有可能用得上的部分&#xff09; ER模型 数据仓库之父Bill Inmon提出的建模方法是从全企业的…

如何使用jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入&#xff0c;然后写一些测试脚本&#xff0c;这就是你所说的自动化测试&#xff0c;其实这个还不能算是真正的自动化测试&#xff0c;你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗&#xff…

Ubuntu 常用命令之 unzip 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 unzip命令在Ubuntu系统中用于解压缩.zip文件。它可以解压缩一个或多个.zip文件&#xff0c;并将文件解压缩到当前目录或指定的目录。 unzip命令的一般格式 unzip [选项] zipfile [file...]其中&#xff0c;zipfile是要解压的.zi…

三种方式简单搭建http本地文件服务

有时候想写一个简单的html文件&#xff0c;然后加上一些image、js、css文件用于测试。希望有一个简单的http服务&#xff0c;总结了如下三种方式&#xff0c;欢迎讨论更多高效的方式。 &#xff08;一&#xff09;使用Web Server for Chrome浏览器扩展 之前写过一篇博文&#x…

uniapp uview 页面多个select组件回显处理,默认选中

<view class"add-item column space-around" click"selectClick(1)"><text class"w-s-color-3 f-28">商品分类</text><view class"w-100 space-between"><!-- 第一个参数为你的单选数组&#xff0c;第二个…

传输层协议分析--第4关:UDP 包分析

任务描述 本关任务&#xff1a;能够掌握简单的 UDP 包分析。 相关知识 为了更好掌握本章内容&#xff0c;你需要了解的有&#xff1a; UDP 报文的简介&#xff1b;UDP 报文格式&#xff1b;Wireshark 软件中的 UDP 抓包分析。 UDP 简介 UDP&#xff08;User Datagram Pro…

anaconda 安装 使用 pytorch onnx onnxruntime

一&#xff1a;安装 如果不是 x86_64&#xff0c;需要去镜像看对应的版本 安装 Anaconda 输入命令 bash Anaconda3-2021.11-Linux-x86_64.sh 然后输入 yes 表示同意 确认安装的路径&#xff0c;一般直接回车安装在默认的 /home/你的名字/anaconda3 很快就安装完毕。输入 yes…

三防平板定制|5G三防工业平板电脑终端联发科MTK方案

三防平板&#xff0c;顾名思义&#xff0c;是指具备防水、防尘、防坠落等特性的平板电脑。它可以在各种恶劣环境中正常使用&#xff0c;如煤矿、工业制造、户外、建筑等。 三防平板的优势在于其坚固耐用、性能稳定。它通常采用高强度的材料制成&#xff0c;具有较强的抗冲击性和…

如何在 openKylin 上使用 ONLYOFFICE 桌面编辑器

文章作者&#xff1a;ajun ONLYOFFICE 桌面编辑器是一款基于依据 AGPL v.3 许可进行分发的开源办公套件。使用这款应用&#xff0c;您无需保持网络连接状态即可处理存储在计算机上的文档。 本文章基于中国根操作系统 openKylin 操作系统&#xff0c;使用软件商店快速安装与手…

uniapp H5项目使用ucharts的Echart组件方式创建圆环

问题&#xff1a;没有报错但是图表不出来 【 调试了半天圆环图表没有不出来。是因为没有明示设置宽度与高度】 /* 请根据实际需求修改父元素尺寸&#xff0c;组件自动识别宽高 */ .charts-box { width: 100%; height: 300px; } 最终效果 先导入ucharts到项目 uniapp的项目…

零代码敲敲云与钉钉的完美集成,打造智能办公新生态

为满足企业对于高效沟通、协作和工作流程管理日益增长的需求&#xff0c;许多企业都在寻找能够与他们现有的工作平台无缝集成的工具。钉钉作为一款广受欢迎的企业通讯和协同工具&#xff0c;已经成为了众多企业的首选。目前敲敲云已于钉钉完美集成&#xff0c;通过这次集成&…