硬盘(磁盘)上的文件就是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件
、数据文件
(从文件功能的角度分类)
2.1、 程序文件
所谓的程序文件就是我们写出来的代码,程序文件包括源程序文件(后缀文 . c .c .c),目标文件( w i n d o w s windows windows 环境后缀为 . o b j .obj .obj),可执行程序( w i n d o w s windows windows环境后缀为 . e x e .exe .exe)
2.2、 数据文件
什么是数据文件呢?当我们写程序,从某一个文件中读取数据;或者把一些数据写到文件中
,这种文件就称为数据文件。
本章我们讨论的内容主要是数据文件。
在之前的学习中,我们所处理的输入输出都是以终端
为对象的,即:从终端的键盘输入数据,运行结果显示到显示器(屏幕)上。
其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上的文件
。
2.3、 文件名
一个文件要有唯一标识,以便用户识别和引用
文件名包含 3 部分:文件路径
+文件名主干
+文件后缀
如:c:\code\test.txt
- c:\code\ 为文件路径
- t e s t test test 为文件名主干
- t x t txt txt 为文件后缀
2.4、二进制文件与文本文件
根据文件的组织形式,数据文件一般被称为文本文件和二进制文件
数据在内存中以二进制的形式存储
,如果不加转换
的输出到外出文件中,就是二进制文件。
前面曾提到的 . o b j .obj .obj文件就是一种 二进制文件,通过文本编辑器打开是一堆乱码,我们是看不懂的
如果要求在外存上以
A
S
C
I
I
ASCII
ASCII 码的形式存储,则需要再存储前转换。以
A
S
C
I
I
ASCII
ASCII 字符存储的文件就是文本文件。
那么一个数据在文件中是如何存储的呢?
字符
一律以
A
S
C
I
I
ASCII
ASCII 码形式存储,数值型数据
及可以用
A
S
C
I
I
ASCII
ASCII 码形式存储,也可以使用二进制形式存储。
什么意思呢?假设现在有一个整数 10000:
如果以
A
S
C
I
I
ASCII
ASCII 码的形式存储,则磁盘中占用 5 个字节(一个字符一个字节):一个字符 ‘1’,四个字符 ‘0’
如果以二进制的形式存储,磁盘上只占4个字节(一个整型)
而以
A
S
C
I
I
ASCII
ASCII 码形式存储则为文本文件
;以二进制形式存储则为二进制文件
。
测试代码:
#include<stdio.h>
int main()
{
int a = 10000;
FILE* pf = fopen("test.txt", "wb");
fwrite(&a, 4, 1, pf);//二进制的形式写到文件中
fclose(pf);
pf = NULL;
return 0;
}
这段代码可能有些看不懂,但是没关系,我们只需知道其大致意思即可:这段代码就是将 10000 以二进制的形式写到文件中
执行程序后,我们直接打开文件:
我们再通过二进制的形式打开文件
VS上打开二进制文件的方法
10000 在二进制文件中
那 10 和 27 又是什么意思呢?其实就是 0001 0000 和 0010 0111 的十六进制表示
,同时,因为是小端字节序存储
,因此存储时反过来的。