IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)
  • 数据文件:
    文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件

本文讨论的是数据文件
之前所处理的数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示在显示器上。
但是有时候需要将信息输出到磁盘上进行保存,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘文件。

文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用

文件名包含三部分:

  • 文件路径
  • 文件名主干
  • 文件后缀

例如:c:\code\test.txt

为了方便起见,文件标识常被称为文件名

文件类型

根据数据的组织形式不同,数据文件被分为文本文件二进制文件

二进制文件:
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件

文本文件:
如果要求外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件

一个数据在内存中是怎么存储的呢?

字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。

如: 有整数10000,如果以ASCII码的形式输出到此怕,磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,磁盘上只占4个字节。
在这里插入图片描述

代码测试:

void main()
{
	int a = 10000;
	FILE* fp1 = fopen("10000_ASCII.txt", "w");
	fprintf(fp1, "%d", a); //ASCII形式

	FILE* fp2 = fopen("10000_BIN.txt", "wb");
	fwrite(&a, 4, 1, fp2); //二进制形式

	fclose(fp1);
	fclose(fp2);
	fp1 = NULL;
	fp2 = NULL;
}

在这里插入图片描述
在这里插入图片描述
(10000的十六进制为00 00 27 10,小端存储)

VS中打开二进制文件: 右击 --> 打开方式 --> 二进制编码器

文件缓冲区

ANSIC标准采用缓冲文件系统处理数据文件。所谓缓冲文件系统是指系统自动的在内存中为程序中每一个正在使用的文件开辟一块文件缓冲区

  • 从内存向磁盘输出的数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。
  • 如果从磁盘向计算机读入数据,则从磁盘文件中读取的数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个的将数据送到程序数据区(程序变量等)。
  • -缓冲区的大小根据C编译系统决定的。
    在这里插入图片描述
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 21:57:27  更:2021-12-26 21:58:04 
 
开发: 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/24 11:45:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码