| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C/C++ 基础文件操作 -> 正文阅读 |
|
[C++知识库]C/C++ 基础文件操作 |
目录 本文的文件操作是 ANSI C 标准的,在 C/C++ 中都可以使用。 1、文件分类从数据的组织形式来说,数据文件可以分为 ASCII 文件和二进制文件。数据在内存(RAM)中是以二进制形式存储的,如果不加处理地输出到外存(ROM)进行文件保存的话,该保存在 ROM 中的文件就是二进制文件。如果要求在 ROM 中以 ASCII 码形式保存的话则需要在存储前进行转换,ASCII 文件又称做文本文件。 就比如内存中有一个 float 类型的浮点数 3.14259 ,如果以二进制形式输出至外存进行存储的话,所占的内存就是 float 固有的?4?个字节的大小。如果以文本格式进行存储的话,则需要将?3.14259 的每一位数字转换成字符类型(ASCII码)进行存储,这时由于有 7 个字符,因此就需要?7?个字节的空间存储。 2、文件的打开与关闭文件的打开与关闭函数分别为 fopen() 与 fclose(),其具体的使用如下:
其中,FILE 为文件类型结构体,定义在 stdio.h 头文件中,用来存放文件名、文件状态、当前位置等信息。一般定义一个 FILE 类型的文件指针,通过指针引用这些 FILE 类型变量更加方便。 fopen 函数的第一个参数是的文件名(字符串类型),是使用绝对路径还是相对路径视实际情况而定,该函数返回一个指向该文件信息区起始地址的指针。第二个参数代表文件的打开方式,是字符串类型的参数,有关该参数的列表如下:
fclose 函数的参数为文件指针。该函数用来关闭文件,即撤销文件指针。若果成功执行了关闭操作则返回0,否则返回 EOF(01)。 3、顺序读写文件顺序读写文件就是从文件的开头开始按顺序进行遍历读写操作,也即按照文件数据的物理存放顺序进行读写。有关库函数的使用列表如下:
函数名中 c 表示字符 character,s 表示字符串 string 系统使用文件读写位置标记来表示当前的访问位置,开始时指向第一个字节,每进行一次读写操作,就自动按顺序移向下一个要读写的位置。程序中可以使用 feof(fp) 函数来判断 文件读写位置标记?是否移到文件末尾,即磁盘文件是否结束,如果是则返回1,否则返回0,一般用于读文件。
fgets 与 fputs 的函数原型为:
使用格式化方式读写文件 函数调用如下:
这两个函数使用方式与 printf 和 scanf 差不多,只是后者的输入输出都是在终端中进行的,前者是在文件中进行的。如下例子
?由前述文件分类可知,格式化读写文件涉及数据的 二进制 与 ASCII 格式的转换,因此在频繁进行磁盘文件操作的场合效率较低,在这种场景下我们可以进行二进制的读写。 使用二进制方式读写文件
使用 fread 函数在进行读操作时直接从文件中读取一个原始的二进制数据块,在使用 fwrite 函数进行写数据操作时也是直接向文件中写入原始未经转换的二进制数据。另外需要注意的是,使用这两个函数的前提是在打开文件时要以二进制方式打开。 四个参数中:
4、随机读写文件一般在使用文件数据时,很少从文件开头进行数据遍历读写的,这样效率太低。我们大多数时候需要从文件中间某个地方的数据进行读取,在跳到另外一个地方进行操作,显然前述的顺序读写操作不适合这种场景,这时就需要对文件的随机读写操作,随机在这里也就是任意位置的意思。 对文件进行随机读写的原理就是对前面提到的?文件读写位置标记?进行自定义的定位,来达到自定义文件读写位置的效果。
第三个参数 起始点 具有三个固定的枚举参数值:
位移量 就是以 起始点 为基点移动的字节数,为正就是向前移动,为负就是向后移动,数据类型为 long 型,因此需要在数字末尾加上 L?,如:
可能在看代码时还会遇到名为?fseeko 或者?fseeko64 的函数,这两个函数的作用与 fseek 函数一样,唯一的不同就是 偏移量 的数据类型,前两个分别为?off_t 和 off64_t 。(off_t 及 off64_t 均为 typedef 数据,原型分别为 long int 和 long long)
如果返回值为 -1L ,则说明函数调用失败。 5、其他与文件相关的操作
stat 函数定义在?sys/stat.h 头文件中,用来获取文件当前的状态。其函数定义为:
参数 file_name 为文件的路径名,函数将该路径下的文件的状态保存在结构体指针 buf 中,该结构体包含文件设备编号(st_dev)、文件类型和存取权限(st_mode)、文件大小(st_size)等方面的信息。具体定义如下(头文件中对 stat 结构体的定义包含一些预处理代码,以下为精简版):
?具体的可参考: linux stat函数讲解 - Leo Chin - 博客园 ——以上内容总结整理自谭浩强的《C语言程序设计(第四版)》—— |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:31:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |