该程序使用fopen()函数打开文件。该函数声明 在stdio.h中。它的第1个参数是待打开文件的名称,更确切地说是一个包含 改文件名的字符串地址。第 2 个参数是一个字符串,指定待打开文件的模 式。
像
UNIX
和
Linux
这样只有一种文件类型的系统,带
b
字母的模式和不带
b 字母的模式相同。 新的C11
新增了带
x
字母的写模式,与以前的写模式相比具有更多特性。第一,如果以传统的一种写模式打开一个现有文件,fopen()
会把该文件 的长度截为 0
,这样就丢失了该文件的内容。但是使用带
x
字母的写模式, 即使fopen()
操作失败,原文件的内容也不会被删除。第二,如果环境允许,
x
模式的独占特性使得其他程序或线程无法访问正在被打开的文件。
如果使用任何一种
"w"
模式(不带
x字母)打开一个现有文件,该文件的 内容会被删除,以便程序在一个空白文件中开始操作。然而,如果使用带x 字母的任何一种模式,将无法打开一个现有文件。程序成功打开文件后,fopen()将返回文件指针(file pointer),其他I/O955函数可以使用这个指针指定该文件。文件指针(该例中是fp)的类型是指向FILE的指针,FILE是一个定义在stdio.h中的派生类型。文件指针fp并不指向实际的文件,它指向一个包含文件信息的数据对象,其中包含操作文件的I/O函数所用的缓冲区信息。因为标准库中的I/O函数使用缓冲区,所以它们