当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 fopen用法及代码示例


C语言stdio头文件(stdio.h)中fopen函数的用法及代码示例。

用法:

FILE * fopen ( const char * filename, const char * mode );
打开文件
打开在参数中指定名称的文件文档名称并将其与可以在以后的操作中识别的流相关联FILE指针返回。

流中允许的操作以及执行这些操作的方式由模式参数。

返回的流是完全缓冲默认情况下,如果已知不引用交互式设备(请参见setbuf)。

可以通过调用将返回的指针与文件解除关联fclose或者freopen。在正常程序终止时,所有打开的文件都会自动关闭。

运行环境至少支持FOPEN_MAX文件同时打开。

参数

filename
C字符串,包含要打开的文件的名称。
其值应遵循运行环境的文件名规范,并且可以包含路径(如果系统支持)。
mode
包含文件访问模式的C字符串。有可能:
"r"读:打开文件进行输入操作。该文件必须存在。
"w"写:创建一个空文件进行输出操作。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。
"a"附加:打开文件以在文件末尾输出。输出操作始终将数据写入文件的末尾,然后对其进行扩展。重新定位操作(fseek,fsetpos,rewind)将被忽略。如果文件不存在,则创建该文件。
"r+"读取/更新:打开文件进行更新(用于输入和输出)。该文件必须存在。
"w+"写入/更新:创建一个空文件并将其打开以进行更新(用于输入和输出)。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。
"a+"追加/更新:打开一个文件进行更新(用于输入和输出),所有输出操作均在文件末尾写入数据。重新定位操作(fseek,fsetpos,rewind)会影响下一个输入操作,但输出操作会将位置移回文件末尾。如果文件不存在,则创建该文件。
随着模式文件上方的说明符以文本文件。为了打开一个文件二进制文件, 一种"b"字符必须包含在模式细绳。这个额外的"b"字符可以附加在字符串的末尾(因此采用以下复合模式:"rb","wb","ab","r+b","w+b","a+b")或插入字母和字符之间。"+"混合模式("rb+","wb+","ab+")的符号。

新的C标准(不属于C++的C2011)添加了新的标准子说明符("x"),可以附加到任何"w"说明符(形成"wx""wbx""w+x"或者"w+bx"/"wb+x")。如果文件存在,此子说明符将强制该函数失败,而不是覆盖它。

如果遵循此顺序,则其他行为取决于库的实现:某些实现可能会忽略其他字符,例如,"t"(有时用于明确声明一个文本文件)被接受。

在某些库实现中,以更新模式打开或创建文本文件可能会将流视为二进制文件。

文字档是包含文本行序列的文件。根据应用程序运行的环境,某些特殊字符转换可能会在文字模式使它们适应system-specific文本文件格式。尽管在某些环境下不会发生转换,并且两者都发生文字档二进制文件以相同的方式处理,使用适当的模式可提高可移植性。

对于打开以供更新的文件(其中包括"+"符号),同时允许输入和输出操作,则应刷新流​​(fflush)或重新定位(fseekfsetposrewind)之后再进行写操作之后的阅读操作。流应重新定位(fseekfsetposrewind),然后再执行读取操作(无论该操作未到达文件末尾)。

返回值

如果文件成功打开,该函数将返回一个指向FILE可用于在将来的操作中标识流的对象。
否则,将返回空指针。
在大多数库实现中,errno变量也会在失败时设置为system-specific错误代码。

示例

/* 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;
}


相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C fopen function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。