b binary 二进制文件
+ 读+写
现在我们再来数一数文件打开方式总共有多少种,r、w、a 是 3 种基本方式,它们可以
分别和+组合,也可以分别和 b 组合,甚至还可以同时和+和 b 组合,因此打开方式一共有
3+3+3+3=12 种。如下表所示:
新建文本文件,文件已存在则覆盖之前的文件,文件只可写。
打开文本文件并定位到文件尾,文件不存在则新建,文件只可写。
新建文本文件,文件已存在则覆盖之前的文件,文件可读写。
打开文本文件并定位到文件尾,文件不存在则新建,文件可读写。
打开二进制文件,文件不存在则打开失败,文件只可读。
新建二进制文件,文件已存在则覆盖之前的文件,文件只可写。
打开二进制文件并定位到文件尾,文件不存在则新建,文件只可写。
打开二进制文件,文件不存在则打开失败,文件可读写。
新建二进制文件,文件已存在则覆盖之前的文件,文件可读写。
打开二进制文件并定位到文件尾,文件不存在则新建,文件可读写。
表 9-1-1
这个表格看起来非常复杂,初学者想要完整地背下来有相当难度,所以我们不建议读者
强行记忆,而是把它当成一个“字典”,遇到不会的内容再来查阅。当读者有了足够多的练
习之后,自然就能轻易写出这个表格了。
我们可以看出,各种打开方式之间的区别无非在这几个方面:读写权限、二进制或文本
文件、新建或打开已有的文件。读者在以后的练习中,可以根据自己的需求,通过上表迅速
找到这 3 方面都满足的打开方式。
9.2 文件的读取与写入
光知道怎么打开和关闭文件是不够的,学会文件的读取与写入操作才能真正地让文件
操作在程序中派上用场。在这一节中,我们将介绍 8 个不同的文件读取与写入的函数,这
些函数每两个分为一组,一共 4 组,分别是:fputc 和 fgetc、fputs 和 fgets、fprintf 和
fscanf、fwrite 和 fread,它们提供了 4 种不同类型的读写操作。
首先来看 fputc 和 fgetc,前者的作用是往文件中写入一个字符(事实上是写入一个字节
的数据,而一个 char 型数据正好占用一个字节),后者则用来从文件中读取一个字节的数据。
我们来看看程序演示:
01 #include <stdio.h>
02 int main()
03 {
04 FILE *file1=fopen("d:/a.txt","w");
05 char *str = "Hello World\n";
06 if (file1 == NULL)