C语言——文件的打开和关闭(fopen,fclose函数)

2023-10-27


一、为什么使用文件

一般我们写程序时,数据都是存放在内存中,当程序退出后这些数据就被内存释放了,从而数据也就不存在了,但是当我们能够下次再运行同一个程序时,数据又得重新录入,十分浪费时间。(这里可以参考C语言实现通讯录)。

这里如何保持将相关的数据保持下来,只有当我们选择删除数据时,数据才会消失。这里就设涉及到了数据持久化问题,我们一般数据持久化的方法有:把数据存放在磁盘中,存放到数据库中等方式。
使用文件我们将数据直接放在电脑的硬盘上,做到数据持久化。


二、什么是文件

磁盘上的文件就是文件。
但是在程序文件中,我们一般谈两种文件:程序文件,数据文件(从功能角度)。

2.1 程序文件

包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境
后缀为.exe)。

2.2 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,
或者输出内容的文件。

2.3 文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
例如: c:\code\test.txt
为了方便起见,文件标识常被称为文件名。


三、文件的打开和关闭

3.1文件指针

首先,我们需要了解一下文件指针的概念:

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统
声明的,取名FILE.

下面我们创建一个FILE*的指针变量:

FILE* pf;   //文件指针变量

定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。

3.2 文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。

//打开文件
FILE* fopen(const char* filename, const char* mode);
//关闭文件
int fclose(FILE* stream);  

这里涉及到文件的打开方式,见转载:
https://blog.csdn.net/nyist327/article/details/22473437

下面关于fopen和fclose函数,举个栗子:

#include<stdio.h>

int main()
{
	FILE* pfile;

	//打开文件
	pfile = fopen("test.txt", 'w');

	//操作文件
	if (NULL==pfile)
	{
		perror("fopen");
		return;
	}

	//读文件...

	//关闭文件
	fclose(pfile);
	pfile = NULL;

	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言——文件的打开和关闭(fopen,fclose函数) 的相关文章

  • Kaggle竞赛:泰坦尼克号灾难数据分析简单案例

    Kaggle竞赛 泰坦尼克号灾难数据分 https www kaggle com c titanic 目标确定 根据已有数据预测未知旅客生死 数据准备 数据获取 载入训练集csv 测试集csv 数据清洗 补齐或抛弃缺失值 数据类型变换 字符
  • 最全的IDEA配置JDK1.8语法支持步骤

    可以把JDK1 8下载好 我把资源上传了 什么时候审核通过我把链接放到这里 有如果有人需要直接留言私信哈 首先 我们双击 进入安装界面直接按照提示进行安装 注意啦 一定要重视安装的路径 默认是C盘 不过我安在了我电脑上的E盘 所以一定要注意

随机推荐

  • 面试官:谈谈过滤器和拦截器的区别?

    您好 我是路人 更多优质文章见个人博客 http itsoku com 一 拦截器和过滤器的区别 1 拦截器 Interceptor 只对action请求起作用 即对外访问路径 而过滤器 Filter 则可以对几乎所有的请求都能起作用 包括
  • js的克隆

    浅克隆 Objext assign lodash的 clone 方法 浅克隆函数 function shallowClone o const obj for let i in o obj i o i return obj 被克隆对象 con
  • Couldn‘t build proto file into descriptor pool

    这是protobuf二进制的问题 解决该问题的唯一方法是安装纯python的实现 具体如下 pip uninstall protobuf pip install no binary protobuf protobuf
  • url-pattern配置为"/"和"/*"的区别

    url pattern配置为 和 的区别 最近在学习springMVC框架 对于其前端控制器的过滤配置url pattern很困惑 遂百度查各种资料 翻阅各种博客 发现每个人的说法都不一样 很多人的理解都是错的 于是找大牛解惑 大牛就是大牛
  • 使 QComboBox 下拉一个树形结构列表

    背景 在项目开发过程中需要使 QComboBox 下拉一个树形列表 直接通过 setModel 和 setView 设置 combox 控件可以实现 但是在单击节点箭头按钮时也会隐藏下拉框的显示 因此需要重新实现 QComboBox 的方法
  • 怎样用pytorch实现ocr文字识别技术

    要使用PyTorch实现OCR Optical Character Recognition 文字识别技术 可以按照以下步骤 收集和准备数据集 数据集应包括文本图像和相应的标签 标签应该是文本图像中的字符序列 可以使用公共OCR数据集 如MN
  • C++调用tensorflow模型

    开发环境 VS2015 python3 6 tensorflow gpu 1 6 C 测试代码 随便写了一个简单的测试代码 在此之前工程要加上包含路径和库目录 我的python路径为 F Anaconda envs python36 inc
  • Python(二十五)

    一 进程与线程的概念 1 1 进程 考虑一个场景 浏览器 网易云音乐以及notepad 三个软件只能顺序执行是怎样一种场景呢 另外 假如有两个程序A和B 程序A在执行到一半的过程中 需要读取大量的数据输入 I O操作 而此时CPU只能静静地
  • 软件测试的目的、原则及流程

    一 软件测试的目的 1 软件测试是为了发现错误而执行程序的过程 2 测试是为了证明程序有错 而不是证明程序无错 发现错误不是唯一目的 3 一个好的测试用例在于它发现至今未发现的错误 4 一个成功的测试是发现了至今未发现的错误的测试 注意 1
  • JVM--基础--30--hs_err_pid

    JVM 基础 30 hs err pid 1 介绍 当jvm出现致命错误时 会生成一个错误文件 hs err pid log hs err pid log文件 默认会生成到工作目录下 hs err pid log 包括了导致 jvm 崩溃
  • UVA1025 A Spy in the Metro

    UVA1025 A Spy in the Metro 题目链接 刚开始接触DP题 感觉还是有一定的难度 在这里再理一遍思路 DP的核心就是状态和状态转移方程 首先状态的确定就是找到影响当前决策的因素 本题是当前时间和所处车站两个 所以可以用
  • cmu14-445 环境搭建

    0 序 记录自己在克隆bustub时的踩坑经历 1 gtest无法正常运行 虽然bustub的仓库中建立一个私人仓库 然后给出了详细的命令行步骤 但我这个懒人不太想专门去建个仓库 于是就顺手直接把仓库克隆了下来 git clone http
  • 1123. 最深叶节点的最近公共祖先

    文章目录 Tag 题目来源 题目解读 解题思路 方法一 递归 写在最后 Tag 递归 最近公共祖先 二叉树 题目来源 1123 最深叶节点的最近公共祖先 865 具有所有最深节点的最小子树 此二题系重复的题目 题目解读 题目意思很明确 找出
  • 两向量常用的“积”-----------内积,外积,点乘,叉乘,哈达玛积,张量积

    英文叫法总结 目前论文中常出现的几种向量积 1 内积 inner product 点积 点乘 dot product 数量积 scalar product 2 外积 Exterior Product 叉乘 Cross Product 矢量积
  • 微电网优化调度(风、光、储能、柴油机)(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 目录 1 概述 2 运行结果 3 参考文献 4 Python代码实现 详细文章 数据 文献来源 Python代码复现之 1 概述 电力对
  • wps里的茶色字体怎么设置_如何添加WPS字体 - 卡饭网

    金山WPS字体添加纹理的方法 金山WPS字体添加纹理的方法 在今天的金山WPS文字处理教程中 我们将给大家分享的是给字体添加纹理的方法 这也是WPS特有的功能之一 给字体添加纹理之后 不仅字体变得更美观 醒目了 而且也字体效果与众不同 也更
  • 3ds max 2014 启动出现 error while registering plugins 怎么修复

    这个问题一般出现在重新安装的 3dsmax2013 和 3dsmax2014 上 这是由于卸载残留的文件造成了插件注册冲突导致的 所以我们需要做的就是删除这些残留文件 删除 C 盘用户目录下的这两个文件夹 C Users AppData L
  • 50多个国外的免费Icon图标免费下载网站

    原文出自 帕兰映像 50多个国外的免费Icon图标免费下载网站Icon图标通常应用于对系统的美化和应用程序的UI设计中 但是随着Web2 0的大潮兴起 大而醒目的设计元素也日趋流行 你完全可以把图标应用到网站设计中 比如菜单栏图标 分类图标
  • Linux安装pip没有权限,linux – 从没有root的python3远程安装pip

    我正在尝试通过ssh为远程主机之一安装python3 我没有root访问权限 安装完成了 wget https www python org ftp python 3 7 0 Python 3 7 0 tgz tar xvzf Python
  • C语言——文件的打开和关闭(fopen,fclose函数)

    文章目录 一 为什么使用文件 二 什么是文件 2 1 程序文件 2 2 数据文件 2 3 文件名 三 文件的打开和关闭 3 1文件指针 3 2 文件的打开和关闭 一 为什么使用文件 一般我们写程序时 数据都是存放在内存中 当程序退出后这些数