欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~


文件

为了数据持久化保存,使用文件,否则数据存储在内存中,程序退出,内存回收,数据就会丢失。

程序设计中,文件分两种:程序文件、数据文件

文件名

唯一的文件标识,包含3部分:文件路径+文件名主干+文件后缀 (例:c:\code\test.txt )

文本文件和二进制文件

文本文件是数据以ASCII字符的形式存储的文件

二进制文件是数据在内存中以二进制的形式存储的文件

字符⼀律以ASCII形式存储数值型数据既可以⽤ASCII形式存储,也可以使⽤⼆进制形式存储。

如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占⽤5个字节(每个字符⼀个字节),⽽ ⼆进制形式输出,则在磁盘上只占4个字节

测试代码

#includeint main(){int a = 10000;FILE* pf = fopen("test.txt", "wb");fwrite(&a, 4, 1, pf);//以二进制的形式写入文件fclose(pf);pf = NULL;return 0;}

我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。
C程序针对⽂件、画⾯、键盘等的数据输⼊输出操作都是通过流操作的。
⼀般情况下,我们要想向流⾥写数据,或者从流中读取数据,都是要打开流,然后操作。

标准流

C语⾔程序在启动的时候,默认打开了3个流:

  • stdin 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。
  • stdout 标准输出流,⼤多数的环境中输出⾄显⽰器界⾯,printf函数就是将信息输出到标准输出流中。
  • stderr 标准错误流,⼤多数环境中输出到显⽰器界⾯。

这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。
stdin、stdout、stderr 三个流的类型是: FILE * ,通常称为⽂件指针。
C语⾔中,就是通过 FILE * 的⽂件指针来维护流的各种操作的。

文件指针

每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名 字,⽂件状态及⽂件当前的位置等)。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系统声明的,取名FILE.(不需要关注文件内部细节)

每当打开⼀个⽂件的时候,系统会根据⽂件的情况⾃动创建⼀个FILE结构的变量,并填充其中的信 息,使⽤者不必关⼼细节

文件的打开和关闭

⽂件在读写之前应该先打开⽂件,在使⽤结束之后应该关闭⽂件。
在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE* 的指针变量指向该⽂件,建立了指针和⽂件的关系。
ANSIC规定使⽤ fopen 函数来打开⽂件, fclose 来关闭⽂件。

fopen打开文件

fclose关闭文件

代码操作

用只读形式,没有创建文件

绝对路径

比如我想在桌面上创建一个文件

相对路径

  • . 表示当前目录
  • . . 表示上一级路径
  • 没写 . 表示默认当前路径