49.文件基本概念.md 2.0 KB
Newer Older
极客江南's avatar
极客江南 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
## 文件基本概念

- 文件流:

+  C 语言把文件看作是一个字符的序列,即文件是由一个一个字符组成的字符流,因此 c 语言将文件也称之为文件流。

- 文件分类

+ 文本文件
+ 以 ASCII 码格式存放,**一个字节存放一个字符**` 文本文件的每一个字节存放一个 ASCII 码,代表一个字符`。这便于对字符的逐个处理,但占用存储空间
  较多,而且要花费时间转换。
+ .c文件就是以文本文件形式存放的

+ 二进制文件
+ 以补码格式存放。二进制文件是把数据以二进制数的格式存放在文件中的,其占用存储空间较少。`数据按其内存中的存储形式原样存放`
+ .exe文件就是以二进制文件形式存放的

---

- **文本文件和二进制文件示例**

+ 下列代码暂时不要求看懂, 主要理解什么是文本文件什么是二进制文件

```c
#include <stdio.h>

int main()
{
    /*
     * 以文本形式存储
     * 会将每个字符先转换为对应的ASCII,
     * 然后再将ASCII码的二进制存储到计算机中
     */
    int num = 666;
    FILE *fa = fopen("ascii.txt", "w");
    fprintf(fa, "%d", num);
    fclose(fa);

    /*
     * 以二进制形式存储
     * 会将666的二进制直接存储到文件中
     */
    FILE *fb = fopen("bin.txt", "w");
    fwrite(&num, 4, 1, fb);
    fclose(fb);

    return 0;
}
```

- 内存示意图
  ![](https://img-blog.csdnimg.cn/img_convert/a989b57283bdbcd82ae8bfb0c6fb4b8d.png)

- 通过文本工具打开示意图
  ![](https://img-blog.csdnimg.cn/img_convert/61ccbc31fd2ed870fde8de4598d52ee3.png)

>+ 文本工具默认会按照ASCII码逐个直接解码文件, 由于文本文件存储的就是ASCII码, 所以可以正常解析显示, 由于二进制文件存储的不是ASCII码, 所以解析出来之后是乱码

## 

最后,如果有任何疑问,请加微信 **leader_fengy** 拉你进学习交流群。

开源不易,码字不易,如果觉得有价值,欢迎分享支持。