1.什么是文件?
在程序设计中,文件按照功能可以分为程序文件,数据文件。
1.1 程序文件
程序文件一般包括源程序文件(.c为后缀),目标文件(.obj)(linux系统是.o为后缀),可执行文件(.exe为后缀);
1.2 数据文件
一般指程序运行需要的从中获取数据的文件,或者程序输出内容,可供保存数据的文件。
根据数据的组织形式,有可将数据文件分为二进制文件和文本文件。
1.2.1 二进制文件
顾名思义就是该文件中的内容都是二进制的形式存在,在我们看来都是乱码,以下就是一份二进制文件。
1.2.2 文本文件
以ASCII字符存储的文件就是文本文件。
2.打开和关闭文件
2.1 “流”
在操作文件之前,我们要先了解一下“流”,我们程序的数据需要输出到各种外部设备,也需要从
外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了方便程序员对各种设备进行方
便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。 C程序针对⽂件、画
⾯、键盘等的数据输⼊输出操作都是同流操作的。 ⼀般情况下,我们要想向流⾥写数据,或者从
流中读取数据,都是要打开流,然后操作。
2.2 标准流
C语言程序在启动的时候,默认打开了3个流:
• stdin - 标准输⼊流,在大多数的环境中从键盘输入。
• stdout - 标准输出流,大多数的环境中输出至显示器界面。
• stderr - 标准错误流,大多数环境中输出到显示器界面。
这是默认打开了这三个流,我们使用scanf、printf等函数就可以直接进行操作输入输出。
stdin、stdout、stderr三个流的类型是: FILE* ,通常称为文件指针。 C语言中,就是通过 FILE*
的文件指针来维护流的各种操作的。
2.3 打开和关闭文件
c语言中,我们在打开文件的时候,会使用FILE* 指针来指向要操作的文件,以此来建立指针变量和文件的关系。
ANSIC规定用fopen来打开文件,fclose来关闭文件。
以下是打开和关闭文件一些输入和读取方式:
⽂件使⽤⽅式 | 含义 | 如果指定⽂件不存在 |
“r”(只读) | 为了输⼊数据,打开⼀个已经存在的⽂本⽂件 | 出错 |
“w”(只写) | 为了输出数据,打开⼀个⽂本⽂件 | 建立⼀个新的⽂件 |
“a”(追加) | 向⽂本⽂件尾添加数据 | 建立⼀个新的⽂件 |
“rb”(只读) | 为了输⼊数据,打开⼀个⼆进制⽂件 | 出错 |
“wb”(只写) | 为了输出数据,打开⼀个⼆进制⽂件 | 建立⼀个新的⽂件 |
“ab”(追加) | 向⼀个⼆进制⽂件尾添加数据 | 建立⼀个新的⽂件 |
“r+”(读写) | 为了读和写,打开⼀个⽂本⽂件 | 出错 |
“w+”(读写) | 为了读和写,建议⼀个新的⽂件 | 建立⼀个新的⽂件 |
“a+”(读写) | 打开⼀个⽂件,在⽂件尾进⾏读写 | 建立⼀个新的⽂件 |
“rb+”(读写) | 为了读和写打开⼀个⼆进制⽂件 | 出错 |
“wb+”(读写) | 为了读和写,新建⼀个新的⼆进制⽂件 | 建立⼀个新的⽂件 |
“ab+”(读写) | 打开⼀个⼆进制⽂件,在⽂件尾进⾏读和写 | 建立⼀个新的⽂件 |
在这里我提供我个人的一些记忆方法:
1.只要是读取文件(r,r+,rb,rb+),指定文件一定要有,没有就会报错;
2.r--read,w--write,b--binary(二进制的),a-add(增加);
//代码示例