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

文件的打开关闭和顺序读写

目录

一、文件的打开与关闭

(一)文件指针

(二) 文件的打开和关闭

二、文件的顺序读写

 (一)fputc

1. 介绍

2. 举例

(二)fgetc

1. 介绍

2. 举例1

3. 举例2

(三) fputs

1. 介绍

2. 举例

(四)fgets

1. 介绍

2. 举例

(五)fprintf

1. 介绍

2. 举例

(六)fscanf

1. 介绍 

2. 举例

(七)区分scanf,printf;fscanf,fprintf;sscanf,sprintf


一、文件的打开与关闭

(一)文件指针

  • 缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”
  • 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE
  • 每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。
  • 一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。
  • 下面我们可以创建一个FILE*的指针变量 
FILE* pf;//文件指针变量
  • 定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件

(二) 文件的打开和关闭

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "r");if (pf == NULL){perror("fopen");return 1;}//关闭文件fclose(pf);pf = NULL;return 0;
}

二、文件的顺序读写

功能函数名适用于
字符输入函数fgetc所有输入流
字符输出函数fputc所有输出流
文本行输入函数fgets所有输入流
文本行输出函数fputs所有输出流
格式化输入函数fscanf所有输入流
格式化输出函数fprintf所有输出流
二进制输入fread文件
二进制输出fwrite文件

 (一)fputc

1. 介绍

int fputc( int c, FILE *stream );

2. 举例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件---输出操作fputc('g', pf);fputc('h', pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

(二)fgetc

1. 介绍

int fgetc( FILE *stream );//读取错误或者读到文件末尾返回EOF//读取正确返回字符的assic码值

2. 举例1

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件---输入操作int ch = 0;while ((ch=fgetc(pf))!=EOF){printf("%c ", ch);}//关闭文件fclose(pf);pf = NULL;return 0;
}

3. 举例2

(三) fputs

1. 介绍

int fputs( const char *string, FILE *stream );

2. 举例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件---写一行fputs("qaz",pf);fputs("wsx", pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

(四)fgets

1. 介绍

2. 举例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{char arr[200] = "xxxx";//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件---读一行fgets(arr, 3, pf);printf("%s", arr);/*while (fgets(arr, 199, pf) != NULL){printf("%s", arr);}*///关闭文件fclose(pf);pf = NULL;return 0;
}

(五)fprintf

1. 介绍

2. 举例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct Stu
{char name[20];//姓名int age;//年龄double d;//分数
};
int main()
{struct Stu s = { "张三",19,78.6 };//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fprintf(pf, "%s %d %lf", s.name, s.age, s.d);//关闭文件fclose(pf);pf = NULL;return 0;
}

(六)fscanf

1. 介绍 

2. 举例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct Stu
{char name[20];//姓名int age;//年龄double d;//分数
};
int main()
{struct Stu s = { "张三",19,78.6 };//打开文件FILE* pf = fopen("C:\\Users\\86173\\Desktop\\data.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件//类比scanf("%s %d %lf", s.name, &(s.age), &(s.d));fscanf(pf,"%s %d %lf", s.name, &(s.age), &(s.d));printf("%s %d %lf", s.name, s.age, s.d);//关闭文件fclose(pf);pf = NULL;return 0;
}

 

(七)区分scanf,printf;fscanf,fprintf;sscanf,sprintf

 

  • scanf:格式化的输入函数
  • printf:格式化的输出函数
  • fscanf:针对所有输入流的格式化的输入函数
  • fprintf:针对所有输出流的输出函数
  • sscanf:把一个字符串转换成格式化的数据
  • sprintf:把一个格式化的数据转换成字符串
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct Stu
{char name[20];//姓名int age;//年龄double d;//分数
};
int main()
{struct Stu s = { "张三",21,47.7 };char buf[200] = { 0 };struct Stu tmp = { 0 };sprintf(buf, "%s %d %lf", s.name, s.age, s.d);printf("%s\n", buf);//从buf字符串中提取结构体数据sscanf(buf, "%s %d %lf", tmp.name, &(tmp.age), &(tmp.d));printf("%s %d %lf", tmp.name, tmp.age, tmp.d);return 0;
}

相关文章:

文件的打开关闭和顺序读写

目录 一、文件的打开与关闭 &#xff08;一&#xff09;文件指针 &#xff08;二&#xff09; 文件的打开和关闭 二、文件的顺序读写 &#xff08;一&#xff09;fputc 1. 介绍 2. 举例 &#xff08;二&#xff09;fgetc 1. 介绍 2. 举例1 3. 举例2 &#xff08;三&…...

(十八)操作系统-进程互斥的软件实现方法

文章目录一、知识总览二、单标志法三、双标志先检查法四、双标志后检查法五、Peterson算法六、总结一、知识总览 二、单标志法 算法思想&#xff1a;两个进程在访问临界区后&#xff0c;会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进…...

2023年三月份图形化一级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

linux 防火墙管理-firewalld

什么是Firewalld 当前很多linux系统中都默认使用 firewalld&#xff08;Dynamic Firewall Manager of Linux systems&#xff0c;Linux系统的动态防火墙管理器&#xff09;服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…...

2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)

2023年最新大厂开发面试题&#xff01;&#xff01;&#xff01; 滴滴篇 B树、B-树的区别? 数据库隔离级别&#xff0c;幻读和不可重复读的区别&#xff1f; 有 hell, well, hello, world 等字符串组&#xff0c;现在问能否拼接成 helloworld&#xff0c;代码实现。 快排算…...

2023年三月份图形化三级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…...

蓝桥杯算法模板

模拟散列表拉链法import java.io.*; import java.util.*; public class a1 {static int n;static int N100003;static int[] hnew int[N];static int[] enew int[N];static int[] nenew int[N]; static int idx; static void insert(int x){int k(x%NN)%N;e[idx]x;ne[idx]h[k];…...

python之并发编程

一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…...

Vue.js自定义事件的使用(实现父子之间的通信)

vue v-model修饰符&#xff1a;.lazy、.number、.trim $attrs数据的透传&#xff0c;在组件&#xff08;这个是写在App.vue中&#xff09;,数据就透传到student组件中&#xff0c;在template中可以直接使用{{$attrs.students}}获取数据 通过defineProps定义的属性在attrs中就…...

第12天-商品维护(发布商品、商品管理、SPU管理)

1.发布商品流程 发布商品分为5个步骤&#xff1a; 基本信息规格参数销售属性SKU信息保存完成 2.发布商品-基本信息 2.1.会员等级-会员服务 2.1.1.会员服务-网关配置 在网关增加会员服务的路由配置 - id: member_routeuri: lb://gmall-memberpredicates:- Path/api/member/…...

动态分区分配计算

动态分区分配 内存连续分配管理分为&#xff1a; 单一连续分配固定分区分配动态分区分配&#xff08;本篇所讲&#xff09; 首次适应算法&#xff08;First Fit&#xff0c;FF&#xff09; 该算法又称最先适应算法&#xff0c;要求空闲分区按照首地址递增的顺序排列。 优点…...

【云原生】k8s的pod基本概念

一、资源限制 Pod 是 kubernetes 中最小的资源管理组件&#xff0c;Pod 也是最小化运行容器化应用的资源对象。一个 Pod 代表着集群中运行的一个进程。kubernetes 中其他大多数组件都是围绕着 Pod 来进行支撑和扩展 Pod 功能的&#xff0c;例如用于管理 Pod 运行的 StatefulSe…...

【史上最全面esp32教程】激光与食人鱼模块篇

文章目录食人鱼模块模块介绍连线说明操作激光模块模块介绍连线说明操作总结提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 食人鱼模块 模块介绍 采用食人鱼LED设计制作一个发光的电子模块&#xff0c;其实他的本质和LED无区别。 连线说明 名称接线…...

《代码整洁之道》二之有意义的命名

1.有意义的命名 1.1 名副其实 取个好名字需要花时间&#xff0c;但是价值远超取名的时间&#xff0c;一旦发现更好的名称就换掉旧的。这么做&#xff0c;读你代码的人都会很开心。 变量名、方法名、类名称需要清晰的告诉别人含义&#xff0c;如果名称需要注释来补充&#xf…...

天气预测demo

天气预测1 数据集介绍1.1 训练集1.2 测试集2 导入数据进行数据分析2.1 浏览数据2.2 探索数据2.2.1 查看数据类型1 数据集介绍 1.1 训练集 训练集中共有116369个样本&#xff0c;每个样本有23个特征&#xff0c;特征具体介绍如下&#xff1a; 列名解释Date&#xff1a;日期&a…...

HDMI协议介绍(四)--Video

目录 视频格式 RGB444 YUV444 YUV422 YUV420 Color Depth Video控制信号 Pixel Repetition HDMI支持多种视频格式和分辨率。以hdmi1.4和2.0协议来说&#xff0c;视频格式支持RGB444、YUV444、YUV422和YUV420&#xff0c;其中RGB444和YUV444一般都是要求支持的。 视频格式…...

微信授权登录流程以及公众号配置方法(golang后端)

一、准备一个已经认证OK的微信公众号和已经备案的域名&#xff0c;且解析好配置好https证书。 1.如上图 微信公众号 > 基本配置 &#xff0c;设置开发者密码 2.设置IP白名单&#xff0c;白名单填写提供后端服务的服务器公网IP 二、公众号服务器配置。 1.找到基本配置 2.将服…...

【软件测试面试题】大厂头条:如何定位bug?实际案例拿offer还不简单......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 问题&#xff1a; 用…...

kubeconfig生成最高权限的token

参考文档 1.https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authentication/ 2. https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/ 操作流程 生成kubernetes集群最高权限admin用户的token admin-role.yaml kind: ClusterRoleBindin…...

Android 9.0 蓝牙去掉传输文件的功能

1.概述 在9.0的系统rom定制化产品开发中,在原生系统中蓝牙这块的功能也是非常重要的,所以在对蓝牙功能开发过程中,对功能的定制要求也多,在蓝牙的开发需求中,功能要求 也是越来越多的,产品需要要求在蓝牙文件传输过程中,进行限制就是不让蓝牙传输文件,所以要求在开始传…...

Qwen2.5-7B+Tools应用场景解析:智能客服、信息查询等实战案例

Qwen2.5-7BTools应用场景解析&#xff1a;智能客服、信息查询等实战案例 1. 引言&#xff1a;当大语言模型遇上工具 想象一下&#xff0c;你正在运营一家电商平台&#xff0c;每天要处理上千条客户咨询。人工客服团队疲于应对&#xff0c;而客户等待时间越来越长。这时&#…...

SFML终极指南:5步掌握跨平台多媒体开发

SFML终极指南&#xff1a;5步掌握跨平台多媒体开发 【免费下载链接】SFML Simple and Fast Multimedia Library 项目地址: https://gitcode.com/gh_mirrors/sf/SFML SFML&#xff08;Simple and Fast Multimedia Library&#xff09;是一个简单、快速、跨平台的多媒体AP…...

ESP32上拉电阻都接了还是报错?试试检查这3个隐藏坑(实测避雷指南)

ESP32与SD卡通信故障排查&#xff1a;3个易被忽视的关键细节 当你在ESP32项目中使用SD卡时&#xff0c;即使按照官方文档正确连接了上拉电阻&#xff0c;仍然可能遇到各种莫名其妙的挂载失败问题。作为一名经历过无数次SD卡"玄学"故障的开发者&#xff0c;我想分享几…...

3步解锁全网资源:res-downloader实战手册

3步解锁全网资源&#xff1a;res-downloader实战手册 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub_Tren…...

大比表氧化铈:催化与净化的新利器

你可能没注意到&#xff0c;一种微小的氧化物粉末&#xff0c;却在工业和环保领域发挥着重要作用。它就是大比表氧化铈。它的独特之处在于每克材料拥有非常大的表面积&#xff0c;可达上百平方米&#xff0c;这意味着它能与更多的气体或反应物接触&#xff0c;从而提升化学反应…...

告别乱码!手把手教你用阿里妈妈数黑体+LVGL 8.3打造炫酷中文界面(附图标字体生成全流程)

告别乱码&#xff01;手把手教你用阿里妈妈数黑体LVGL 8.3打造炫酷中文界面&#xff08;附图标字体生成全流程&#xff09; 在智能家居控制面板、工业HMI等嵌入式设备开发中&#xff0c;中文显示一直是工程师的痛点。传统解决方案要么占用过多Flash空间&#xff0c;要么显示效…...

Phi-3 Forest Laboratory 学术辅助:基于LaTeX的论文写作与公式编辑

Phi-3 Forest Laboratory 学术辅助&#xff1a;基于LaTeX的论文写作与公式编辑 写论文&#xff0c;尤其是理工科的论文&#xff0c;对很多学生和研究人员来说&#xff0c;是个既费时又费力的活儿。光是“相关工作”部分&#xff0c;就得翻遍文献&#xff0c;总结归纳&#xff…...

4大维度优化Windows 11:给专业用户的系统减负指南

4大维度优化Windows 11&#xff1a;给专业用户的系统减负指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善你…...

【VS Code】Windows10下VS Code配置Graphviz和DOT语言环境:从零开始到高效绘图

1. 为什么选择GraphvizDOTVS Code组合&#xff1f; 如果你经常需要绘制流程图、组织结构图或者算法示意图&#xff0c;一定遇到过这些烦恼&#xff1a;用鼠标拖拽调整图形太费时间&#xff0c;修改布局要反复操作&#xff0c;多人协作时版本混乱。GraphvizDOT语言正是为解决这些…...

沥青路面结构车撤温度场分析案例系列

abaqus模拟案例系列-沥青路面结构车撤温度场分析计算&#xff0c;内部包含inp&#xff0c;cae&#xff0c;及子程序&#xff08;film&#xff0c;dflux&#xff09;for文件。沥青路面车辙分析总绕不开温度场的影响。今天咱们来盘一盘Abaqus里怎么玩转温度-车辙耦合分析。先上硬…...