C语言字符串转换为二进制位流,C语言文件操作详细入门教程

 2024-02-22 01:04:14  阅读 0

1.需要掌握的一些知识点

文件有上千种,但在我们的编程中,一般会说两类文件:

1.程序文件

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

2.数据文件

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

在本节中,我们主要参考数据文件。

1.文件名

我们知道名称是用来标识和区分事物的,所以文件名也是如此,文件名是区分每个文件的标识符。

文件名由3部分组成:文件路径+文件名主干+文件后缀

例如:C:\\\\etc.txt

其中:C:\\\\为文件路径,etc为文件名主干,txt为文件名后缀。

当然,文件路径因平台而异,为了方便起见,文件标识符通常称为文件名。

2.文件类型

根据数据的组织方式,数据文件称为文本文件或二进制文件。

二进制文件:数据以二进制形式存储在内存中,不经过转换就输出到外部存储器。

文本文件:需要以ASCII码的形式存储在外部存储器上,存储前需要进行转换,以ASCII字符的形式存储的文件。

那么一段数据在内存中是如何存储的呢?

字符始终以 ASCII 形式存储,数字数据可以以 ASCII 或二进制形式存储。

比如有一个整数10000,如果以ASCII码的形式输出到磁盘上,就会在磁盘上占用5个字节(每个字符一个字节)

二进制形式输出仅占用磁盘上的4个字节(测试)。

喜欢:

我们可以测试一下:

#

int main()

整数a=10000;

FILE* pf = fopen("test.txt", "wb");

(&a, 4, 1, pf);//以二进制形式写入文件

(pf);

pf = 空;

0;

我们打开的时候要注意用二进制编辑器打开。 你会发现出现了一串如下图所示的数字,这些数字都是用十六进制表示的。 转换后,正好是上图所示的一串二进制数。 (注意VS使用-存储模式)

c string转文件流_流转文件怎么写_流转文件流程

3. 数据流向

数据流:

是指程序与数据的交互以流的形式进行,包括输入流和输出流;

输入流:

程序从输入流中读取数据源。 数据源包括键盘、文件、网络等,即将数据源读入程序的外部通道。

输出流:

程序将数据写入输出流。 将程序中的数据输出到外界(显示器、打印机、文件、网络等)的通信通道。

使用数据流的目的是让输入和输出独立于设备,无论数据源来自哪里,输出目的地是什么设备。

4. 文件缓冲区

缓冲:

指程序运行时提供的额外内存,可用于临时存储准备执行的数据。 可以大大提高创建、访问、删除静态数据的运行速度(有时速度提升可达几十倍),

它为我们提供了极大的便利,节省了大量的时间和精力。

文件缓冲区:

ANSIC 标准使用“缓冲文件系统”来处理数据文件。 所谓缓冲文件系统,是指系统自动在内存中为程序中正在使用的每个文件创建一个“文件缓冲区”。

从内存输出到磁盘的数据会先发送到内存中的缓冲区,等缓冲区填满后再一起发送到磁盘。 如果从磁盘读取数据到计算机,则从磁盘文件读取数据并输入到内存缓冲区(缓冲区被填满),

然后数据从缓冲区一一发送到程序数据区(程序变量等)。 缓冲区的大小由C编译系统决定。

喜欢:

流转文件流程_c string转文件流_流转文件怎么写

无论是输入还是输出,都是先存入缓冲区,然后再进行输入输出。

5. 文件指针

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

每个使用过的文件在内存中开辟一个对应的文件信息区,用于存储文件相关信息(如文件名、文件状态和文件当前位置等)。

该信息存储在结构变量中。 结构体类型由系统声明并命名为FILE。

我们可以看一下VS 2019中FILE的声明:

//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

//

// 通过这个进行I/O

//

//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

#

#

空白* ;

} 文件;

#万一

不同C编译器的FILE类型的内容并不完全相同,但也类似。

每当打开一个文件时,系统会根据文件的情况自动创建一个FILE结构的变量,并填充信息。 用户无需关心细节。

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码