C/C++文件操作(细节满满,part1)

这篇具有很好参考价值的文章主要介绍了C/C++文件操作(细节满满,part1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:

仍有未知等待探索_C语言疑难,数据结构,PTA-CSDN博客

专题分栏:

C语言疑难_仍有未知等待探索的博客-CSDN博客

目录

一、引言 

二、什么是文件 

1、程序文件

2、数据文件

3、文件名 

4、文件路径 

1.相对路径

2.绝对路径

三、文件的打开和关闭 

1、文件操作的大体流程

2、文件的类型

3、文件打开函数(fopen) 

1.功能 

2.参数

3.文件的打开方式

4.fopen函数的使用 

4、文件关闭函数(fclose) 

1.功能

2.参数

3.流的概念

4.fclose函数的使用


一、引言 

为什么要学文件操作呢?

我们通过写这么长时间的代码,程序数据是存放在内存中,当程序退出的时候,程序数据自然就不存在了,等下次运行程序的时候,数据又得重新录入,比较麻烦。而这时候就需要通过将数据存在磁盘等方法来使数据持久化,这就需要我们对文件进行操作,来储存数据。

二、什么是文件 

磁盘上的就是文件。

文件分为两种:程序文件和数据文件。

1、程序文件

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

2、数据文件

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

3、文件名 

文件名:文件名路径+文件名主干+文件名后缀

4、文件路径 

1.相对路径

假设文件名为text.txt。

当在文件名前加上./操作符的时候,意思是访问当前路径下的文件。

当在文件名前加上../操作符的时候,意思是访问上一级路径下的文件。

当在文件名前加上../../操作符的时候,意思是访问上上一级路径下的文件。(可以叠加)

2.绝对路径

如:D:\Code\c-language\file\text.txt

三、文件的打开和关闭 

1、文件操作的大体流程

说了那么多,那我们如何用C语言程序来对文件进行操作呢?

首先,我们要知道在对文件进行读和写操作之前,要先进行文件打开的操作。

然后,我们才进行对文件进行各种操作。

最后,我们既然要打开文件,也必然要关闭操作。

2、文件的类型

在C语言中,文件也是有自己的类型的。文件的类型是一个结构体类型名字叫做FILE,不过,文件的类型不用我们自己进行编写,其已经由程序员编写完成,只需要我们来使用。

文件类型的结构体里面都有什么变量,存文件的哪些信息也不需要我们详细的知道。

3、文件打开函数(fopen) 

文件如何打开呢?需要调用一个函数fopen。

C/C++文件操作(细节满满,part1),C语言疑难,c语言,开发语言

1.功能 

以某种特定的方式来实现文件的打开操作。

2.参数

filename:文件类型的变量名。

mode:为某种文件打开方式。

3.文件的打开方式

文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 建立一个新的文件
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件

4.fopen函数的使用 

程序员通过给fopen函数进行传参(传:需要打开的文件名和和某种打开方式),然后将返回一个文件的地址,用一个文件指针进行接收。

同样地,文件的打开操作也会有失败的时候,当文件打开失败时,fopen函数会返回空指针。所以我们在对文件进行处理时需要进行判空。

#include<stdio.h>
int main()
{
	//打开文件
	//"w"只写操作,当该路径下没有该文件名的文件的时候,会新建一个文件。
	FILE* pf = fopen("text.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	else
	{
		//文件处理...
		//关闭文件
	}
	return 0;
}

4、文件关闭函数(fclose) 

文件的关闭操作同样地需要一个函数来完成。

C/C++文件操作(细节满满,part1),C语言疑难,c语言,开发语言

1.功能

fclose函数地功能是将指定的文件关闭,然后返回一个整数。当文件成功关闭的时候返回0值,当文件关闭失败的时候返回EOF。

2.参数

FILE * stream是一个文件流,也就是所要关闭的文件。

3.流的概念

流是一个高度抽象的概念。流的出现方便了程序员对于数据的存储。不需要程序员对存入不同设备的数据用不同的方式来存储,而可以将数据放入流中,让C语言去处理流中的数据存入不同的设备。

C/C++文件操作(细节满满,part1),C语言疑难,c语言,开发语言

4.fclose函数的使用

在使用fclose函数将文件进行关闭后,最好将指向这个文件的指针pf置为空,来防止野指针。 

#include<stdio.h>
int main()
{
	//打开文件
	//"w"只写操作,当该路径下没有该文件名的文件的时候,会新建一个文件。
	FILE* pf = fopen("text.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	else
	{
		//文件处理...
		//关闭文件
		fclose(pf);
		pf = NULL;
	}
	return 0;
}

谢谢大家的支持! 文章来源地址https://www.toymoban.com/news/detail-717311.html

到了这里,关于C/C++文件操作(细节满满,part1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis项目 PART1

    第一部分:含注册登入+商户查询(使用缓存) 使用redis而不用传统的session的原因(session共享问题):每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第

    2024年02月16日
    浏览(39)
  • 动态规划(一) part1

    T1:一个数组 中的最长 升序 子序列 的长度 给你一个整数数组  nums  ,找到其中最长严格递增子序列的长度。 子序列  是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如, [3,6,2,7]  是数组  [0,3,1,6,2,2,7]  的子序列。 解: 1.关键 (1)

    2023年04月19日
    浏览(78)
  • 计算机网络 Part1

    目录 计算机网络的一些术语: 计算机网络的重点: 整体结构以及HTTP部分一些问题: TCP以及UDP相关的问题: DNS以及网络安全相关的问题: 1. OSI七层模型的每一层分别是什么?对应的协议有哪些? 传输层协议和网络层协议有什么区别?   HTTP协议为什么设计为无状态的? H

    2024年02月12日
    浏览(38)
  • SwiftUI 布局协议 - Part1

    今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。 早在2019年,我写了一篇文章 SwiftUI 中 frame 的表现 ,其中,我阐述了父视图和子视图如何协调形成最终视图效果。那里描

    2024年02月05日
    浏览(44)
  • NzN的数据结构--二叉树part1

            你叉叉,让你学数据结构你不学;你叉叉,让你看二叉树你不看。 今天我们来一起学习二叉树部分, 先赞后看是好习惯 。           树是一种 非线性 的数据结构,它是由n(n=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂

    2024年04月13日
    浏览(70)
  • Python八股文:基础知识Part1

    1. 不用中间变量交换 a 和 b 这是python非常方便的一个功能可以这样直接交换两个值  2. 可变数据类型字典在for 循环中进行修改 这道题在这里就是让我们去回答输出的内容,这里看似我们是在for循环中每一次加入了都在list中加入了一个字典,然后字典的键值对的value每次都加

    2024年04月12日
    浏览(29)
  • Leetcode with Golang 滑动窗口 Part1

    滑动窗口的定义: 滑动窗口这一个技巧主要运用于处理数组问题上,一般用于“子串”问题。精髓是,维护一个里面装着元素的“窗口”,在将新元素装进“窗口”的同时,根据题意,把不符合题意的元素踢出“窗口”。 滑动窗口的模板: 接下来看几道题目: Leetcode 209.长

    2024年01月19日
    浏览(41)
  • 当代软件工程师技术面试准备Part1

    当代软件工程师技术面试准备Part1 一. 编码 - Leetcode     LeetCode 是一个在线的编程练习平台,专注于帮助程序员提升他们的编程技能。该平台提供了大量的算法和数据结构问题,涵盖了各种难度级别,从简单到困难。LeetCode的主要目标是帮助程序员准备技术面试,特别是在软

    2024年02月03日
    浏览(51)
  • 集群配置,hadoop配置过程,细节满满

    做一个hadoop的配置流程的全记录,把遇到的问题和细节全都记录了下来。 目录 1.安装前准备 jdk,hadoop安装包: 2.开始安装jdk,hadoop 导入安装包 修改jdk,hadoop文件用户所属 配置jdk,hadoop 环境变量,添加对应环境变量 测试安装是否成功  3.hadoop 集群配置文件 core-site.xml hdfs-

    2024年02月05日
    浏览(35)
  • Linux之权限(内容详细,细节满满)

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶    Linux 欢迎大家点赞,评论,收藏。 一起努力 目录 一.前言 二.权限修改的两种方法 2.1利用字符修改 2.1.1Linux中文件的类型

    2024年01月25日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包