小工具知识网

当前位置: 首页 > 行业知识 > 【C语言】深入了解文件:简明指南

行业知识

【C语言】深入了解文件:简明指南

2026-11-02 06:16:48 来源:互联网转载

个人主页:是店小二呀

C语言笔记专栏:C语言笔记

C++笔记专栏: C++笔记

喜欢的诗句:无人扶我青云志 我自踏雪至山巅


文章目录

  • 一、文件的概念
    • 1.1 文件名:
    • 1.2 程序文件和数据文件
    • 二、数据文件(The data file)
      • 2.1 二进制文件和文本文件
      • 三、文件的打开和关闭
        • 3.1 流和标准流
          • 3.1.1 流
          • 3.1.2 标准流
          • 四、文件指针
            • 4.1 文件的打开和关闭

              一、文件的概念

              文件的概念:

              文件是一种装载数据和信息的载体,存储着用户输入或者处理得到的各种有用信息,例如:文本文档、图片、音乐和视频等等(从硬盘上的文件是文件)。文件与内存的作用都是用于存储数据,区别在于内存是存储CUP的临时数据,无法持久化保存,会导致数据丢失。因此我们可以使用文件进行持久化保存。

              1.1 文件名:

              • 一个文件要有一个唯一的文件标识,便于用户的引用
              • 文件名包括三个部分:文件路径+文件名主干+文件后缀(c:\code\test.txt)
              • 为了方便,文件标识常被称为文件名

                1.2 程序文件和数据文件

                在程序设计上,根据文件功能,一般分为两种文件:程序文件和数据文件

                程序文件(用存储程序的文件):

                • 程序文件包括源程序文件(后缀为.c),目标文件(windows环境下后缀为.obj),可执行程序((windows环境下后缀为.exe)
                • 这里里的"程序"跟计算机技术的程序是不相同的,在这里指的为完成某项活动所规定的方式

                  数据文件(The data file):

                  • 当文件内容不是程序时,而是程序运行时读写的数据(可以是读取数据的文件,也可以是输出内容的文件)。

                    二、数据文件(The data file)

                    本篇主要谈论数据文件的相关知识。对于之前处理数据的输出输入都是以终端为对象,终端的键盘输入数据,运行结果显示到显示器上。

                    有时也会把数据信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用(磁盘上的文件)

                    2.1 二进制文件和文本文件

                    根据数据的组织形式,数据文件被称为文本文件或者二进制文件

                    • 二进制文件(存储二进制信息的文件):数据在内存中以二进制的形式存储,不加转换的输出到外存(磁盘)
                    • 文本文件(存储文本信息的文件):数据在内存中以ASCII的形式存储,需要在存储前转换的输出到外存

                      【注意】:字符一律以ASCII形式存储,数值型数据据可以使用ASCII形式存储,也可以使用二进制形式存储

                      【问题】:存储整数10000,以ASCII形式或二进制形式输出到磁盘中,空间的占用情况?

                      【占用情况】:

                      • ASCII形式存储:将每一个数据看成一个字符‘1’‘0’‘0’‘0’‘0’‘0’,则磁盘中占用五个字节
                      • 二进制形式存储:整型类型占用四个字节
                        int main(){    int a = 10000;    FILE* pf = fopen("test.txt", "wb");    fwrite(&a, 4, 1, pf);//⼆进制的形式写到⽂件中    fclose(pf);    pf = NULL;    return 0;}

                        检验下:在VS打开二进制文件


                        三、文件的打开和关闭

                        3.1 流和标准流

                        3.1.1 流

                        不同的外部设备的输入输出操作不同,为了方便统一,对各种设备进行方便的操作,提出了流的概念。

                        流:往往是对一种有序连续具有方向性的数据的抽象描述。(从流读取,先打开流,之后操作)

                        3.1.2 标准流

                        【问题】:为什么键盘输入数据,向屏幕上输入数据,并没有打开流呢?

                        在C语言程序启动时,默认打开三个流:

                        • stdin-标准输⼊流,在大多数的环境中从键盘输入
                        • stdout-标准输出流,大多数的环境中输出至显示器界面。
                        • stderr-标准错误流,大多数环境中输出到显示器界面。

                          四、文件指针

                          每当使用一个文件,都会在内存中开辟一个相应的文件信息区,用来存放文件的相关信息(文件名,文件状态以及文件当前路径)。

                          这些信息被保存在一个结构体变量,并且该结构体类型是由系统声明的,取名FILE.(一般通过一个FILE指针来维护这个FILE结构的变量)

                          VS2013编译环境提供的stdio.h头文件中有以下的文件类型申明:

                          struct _iobuf{    char *_ptr;    int _cnt;    char *_base;    int _flag;    int _file;    int _charbuf;    int _bufsiz;    char *_tmpfname;};typedef struct _iobuf FILE;注:不同编译器的FILE类型包含的内容不完全相同,但是大差不多

                          每当打开一个文件,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息(使用者不用关心细节)

                          文件指针变量指向某个文件的文件信息区(结构体变量),并且通过文件信息区就能访问该文件。(通过文件指针间接访问相关的文件)

                          4.1 文件的打开和关闭

                          ANSIC规定使用fopen函数来打开文件, fclose来关闭文件使用文件进行读写,需要三个步骤:

                          1. 打开文件
                          2. 文件操作
                          3. 关闭文件
                          打开文件    FILE *fopen(const char *filename,const char *mode);关闭文件    FILE *fclose(FILE *stream);

                          mode表示文件的打开模式,下⾯都是文件的打开模式 :

                          ⽂件使⽤⽅式含义如果指定⽂件不存在
                          “r”(只读)为了输⼊数据,打开⼀个已经存在的⽂本⽂件出错
                          “w”(只写)为了输出数据,打开⼀个⽂本⽂件建⽴⼀个新的⽂件
                          “a”(追加)向⽂本⽂件尾添加数据建⽴⼀个新的⽂件
                          “rb”(只读)为了输⼊数据,打开⼀个⼆进制⽂件出错
                          “wb”(只写)为了输出数据,打开⼀个⼆进制⽂件建⽴⼀个新的⽂件
                          “ab”(追加)向⼀个⼆进制⽂件尾添加数据建⽴⼀个新的⽂件
                          “r+”(读写)为了读和写,打开⼀个⽂本⽂件出错
                          “w+”(读写)为了读和写,建议⼀个新的⽂件建⽴⼀个新的⽂件
                          “a+”(读写)打开⼀个⽂件,在⽂件尾进⾏读写建⽴⼀个新的⽂件
                          “rb+”(读写)为了读和写打开⼀个⼆进制⽂件出错
                          “wb+”(读写)为了读和写,新建⼀个新的⼆进制⽂件建⽴⼀个新的⽂件
                          “ab+”(读写)打开⼀个⼆进制⽂件,在⽂件尾进⾏读和写建⽴⼀个新的⽂件

上一篇:一统怎么拼音?

下一篇:揭秘打印机端口,端口选择与设置全攻略