fopen

来源:互联网 发布:pscc2018软件下载 编辑:程序博客网 时间:2024/06/07 14:43

头文件:

<cstdio>

声明:

FILE *fopen(const char *filename, const char *mode);

功能:

打开文件

打开一个由参数filename指定的文件,并且将它和一个流关联。该流能够在之后的操作中使用返回值FILE来作识别。

允许如何在该流上面进行操作及其操作方式均由参数mode来指定。

可调用函数fclose或freopen来使返回的FILE文件句柄与流不关联。

当程序终止运行时,所有的文件都会自动关闭。

运行环境支持至少FOPEN_MAX个文件同时打开,FOPEN_MAX在任何系统上应该大于7。

参数:

filename

包含要打开文件的文件名字。

它的值应该遵循运行环境的文件命名规则并且能够包含一个路径名(如果系统支持的话)。

mode

包含文件访问模式,可以是如下几种:

"r":read:由于输入操作而打开文件。文件必须已经存在。

"w":write:由于输出操作而创建一个空文件。如果有一个相同文件名的文件已经存在,则它的内容会被丢弃且该文件会被认为是一个新的空文件。

"r+":read/update:由于更新而打开一个文件(既可以是输入也可是输出)。改文件必须已经存在

"w+":write/update:创建一个空文件且由于更新打开它(既可以是输入也可以是输出),如果有一个相同文件名的文件已经存在,则它的内容会被丢弃且该文件会被认为是一个新的空文件。

"a+":append/update:由于更新而打开一个文件(既可以是输入也可以是输出),且所有的输出操作写入的数据在文件结尾处。重置位操作(fseek,fsetpos,rewind)影响下一个输入操作,但是输出操作移动位置到文件结尾处。如果文件不存在则创建它。

以上mode所指定的文件模式打开的文件都是txt文件。如果要打开二进制文件,则还需要在mode字符串中加一个"b"。这个附加的"b"字符既可以追加到字符串的结尾(因此会出现这些组合:"rb","wb","ab","r+b","w+b","a+b")h或者插入到字母中间以"+"号做连接("rb+","wb+","ab+")

在新的C标准(C2011,还不是C++的一部分)添加了新的标准子描述符("x"),能够附加到任何有"w"的描述符中(形成"wx","wbx","w+x"或者"w+bx"/"wb+x")。如果文件已经存在,该子描述符会使该函数失败,而不是重写覆盖它。

如果附加字符遵循顺序,依赖于库的行为将会是:

一些实现可能忽略附加字符以至于比如会需要一个附加字符"t"(有时用于text文件)

在一些库实现上,带update模式打开或创建一个text文件可能将该流视为一个二进制文件。

Text文件是包含文本行顺序的文件。依赖于APP运行的环境,一些特殊字符转换可能在text文件和二进制文件中的输入或输出操作中发生,为了匹配特定系统text文件格式。尽管在一些系统上不会发生转换并且text文件和二进制文件被同等对待,都使用合适的模式改善移植性。

对于那些由于更新而打开的文件而言(带+号的模式),运行的操作既可以输入也可以输出,在写操作之后,读操作之前应该刷新(fflush)或者重定位(fseek,fsetpos,rewind)该流。该流应该在读操作(无论何时该操作都不应该到达文件结尾处)之后,写操作之前被重定位(fseek,fsetpos,rewind)。

返回值:

若文件成功打开,该函数返回一个指针到FILE对象,并且在随后的使用中可用来表示该流。

否则,返回一个Null指针。

在大多数库实现中,errno变量在失败时还可设置为特定系统的错误代码。

实例:

/* fopen example */  #include <stdio.h>  int main ()  {    FILE * pFile;    pFile = fopen ("myfile.txt","w");    if (pFile!=NULL)    {      fputs ("fopen example",pFile);      fclose (pFile);    }    return 0;  }  
结果:



原创粉丝点击