C语言fopen等几个f函数用法

上传人:平*** 文档编号:14309090 上传时间:2017-10-29 格式:DOC 页数:13 大小:85.16KB
返回 下载 相关 举报
C语言fopen等几个f函数用法_第1页
第1页 / 共13页
C语言fopen等几个f函数用法_第2页
第2页 / 共13页
C语言fopen等几个f函数用法_第3页
第3页 / 共13页
C语言fopen等几个f函数用法_第4页
第4页 / 共13页
C语言fopen等几个f函数用法_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《C语言fopen等几个f函数用法》由会员分享,可在线阅读,更多相关《C语言fopen等几个f函数用法(13页珍藏版)》请在金锄头文库上搜索。

1、C 语 言 函 数 fopen函 数 简 介函 数 功 能 : 打 开 一 个 文 件 函 数 原 型 : FILE * fopen(const char * path,const char * mode); 相 关 函 数 : open, fclose, fopen_s1 , _wfopen 所 需 库 : 返 回 值 : 文 件 顺 利 打 开 后 , 指 向 该 流 的 文 件 指 针 就 会 被 返 回 。 若 果 文 件 打 开 失 败则 返 回 NULL, 并 把 错 误 代 码 存 在 errno 中 。 一 般 而 言 , 打 开 文 件 后 会 作 一 些 文 件 读 取 或

2、 写 入 的 动 作 , 若 打 开 文 件 失 败 , 接 下 来的 读 写 动 作 也 无 法 顺 利 进 行 , 所 以 在 fopen()后 请 作 错 误 判 断 及 处 理 。 参 数 说 明 : 参 数 path 字 符 串 包 含 欲 打 开 的 文 件 路 径 及 文 件 名 , 参 数 mode 字 符 串 则 代 表 着 流形 态 。 mode 有 下 列 几 种 形 态 字 符 串 : r 打 开 只 读 文 件 , 该 文 件 必 须 存 在 。 r+ 打 开 可 读 写 的 文 件 , 该 文 件 必 须 存 在 。 rb+ 读 写 打 开 一 个 二 进 制 文

3、件 , 只 允 许 读 写 数 据 。 rt+ 读 写 打 开 一 个 文 本 文 件 , 允 许 读 和 写 。 w 打 开 只 写 文 件 , 若 文 件 存 在 则 文 件 长 度 清 为 0, 即 该 文 件 内 容 会 消 失 。 若 文 件不 存 在 则 建 立 该 文 件 。 w+ 打 开 可 读 写 文 件 , 若 文 件 存 在 则 文 件 长 度 清 为 零 , 即 该 文 件 内 容 会 消 失 。 若 文件 不 存 在 则 建 立 该 文 件 。 a 以 附 加 的 方 式 打 开 只 写 文 件 。 若 文 件 不 存 在 , 则 会 建 立 该 文 件 , 如 果

4、文 件 存 在 ,写 入 的 数 据 会 被 加 到 文 件 尾 , 即 文 件 原 先 的 内 容 会 被 保 留 。 ( EOF 符 保 留 ) a+ 以 附 加 方 式 打 开 可 读 写 的 文 件 。 若 文 件 不 存 在 , 则 会 建 立 该 文 件 , 如 果 文 件 存在 , 写 入 的 数 据 会 被 加 到 文 件 尾 后 , 即 文 件 原 先 的 内 容 会 被 保 留 。 ( 原 来 的 EOF 符不 保 留 ) wb 只 写 打 开 或 新 建 一 个 二 进 制 文 件 ; 只 允 许 写 数 据 。 wb+ 读 写 打 开 或 建 立 一 个 二 进 制 文

5、 件 , 允 许 读 和 写 。 wt+ 读 写 打 开 或 着 建 立 一 个 文 本 文 件 ; 允 许 读 写 。 at+ 读 写 打 开 一 个 文 本 文 件 , 允 许 读 或 在 文 本 末 追 加 数 据 。 ab+ 读 写 打 开 一 个 二 进 制 文 件 , 允 许 读 或 在 文 件 末 追 加 数 据 。 上 述 的 形 态 字 符 串 都 可 以 再 加 一 个 b 字 符 , 如 rb、 w+b 或 ab 等 组 合 , 加 入 b 字 符 用 来 告 诉 函 数 库 打 开 的 文 件 为 二 进 制 文 件 , 而 非 纯 文 字 文 件 。 不 过 在 PO

6、SIX 系 统 ,包 含 Linux 都 会 忽 略 该 字 符 。 由 fopen()所 建 立 的 新 文 件 会 具 有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权 限 , 此 文 件 权 限 也会 参 考 umask 值 。 有 些 C 编 译 系 统 可 能 不 完 全 提 供 所 有 这 些 功 能 , 有 的 C 版 本 不 用 r+,w+,a+,而 用 rw,wr,ar等 , 读 者 注 意 所 用 系 统 的 规 定 。表格 1. fopen() 中的 mode 的可能值列表 mode 说明r 只读方式打开,将文

7、件指针指向文件头。 r+ 读写方式打开,将文件指针指向文件头。 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(

8、2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 x+创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。 注: 不同的操作系统家族具有不同的行结束习惯。当你写入一个文本文件并想插入一个新行时,你需要使用符合你操作系统的行

9、结束符号。基于 Unix 的系统使用 n 作为行结束字符,基于 Windows 的系统使用 rn 作为行结束字符,基于 Macintosh 的系统使用 r 作为行结束字符。 如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。 Windows 下提供了一个文本转换标记( t)可以透明地将 n 转换为 rn。与此对应你还可以使用 b 来强制使用二进制模式,这样就不会转换你的数据。要使用这些标记,要么用 b 或者用 t 作为 mode 参数的最后一个字符。 默认的转换模式依赖于 SAPI 和你使用的 PHP 版本,因此为了便于移植鼓励你总是指定恰当的标记。当操作以

10、 n 作为行结束定界符的纯文本文件时,如果你还期望这些文件可以用于其它应用程序例如 Notepad,则应该在脚本中使用 t 模式。在所有其它情况下使用 b。 在操作二进制文件时如果没有指定 b 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 rn 字符的奇怪问题。 注: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 b 标记。 注: 再一次,为移植性考虑,强烈建议你重写那些依赖于 t 模式的代码使其使用正确的行结束符并改成 b 模式。 如果也需要在 include_path 中搜寻文件的话,可以将可选的第三个参数 use_include_path 设为 1 或 T

11、RUE。 如果打开失败,本函数返回 FALSE。 程 序 示 例程 序 示 例 1 #include #include /为 了 使 用 exit() int main() int ch; FILE* fp; char fname50; /用 于 存 放 文 件 名 printf(输 入 文 件 名 : ); scanf(%s,fname); fp=fopen(fname,r); /只 供 读 取 if(fp=NULL) /如 果 失 败 了 printf(错 误 ! ); exit(1); /中 止 程 序 /getc()用 于 在 打 开 文 件 中 获 取 一 个 字 符 while(c

12、h=getc(fp)!=EOF) putchar(ch); fclose(fp); /关 闭 文 件 return 0; Djx:#include #include /为 了 使 用 exit()int main() int ch; FILE* fp; char fname50; /用 于 存 放 文 件 名 printf(输 入 文 件 名 : ); scanf(%s,fname); fp=fopen(fname,r); /只 供 读 取 if(fp=NULL) /如 果 失 败 了 printf(错 误 ! ); exit(1); /中 止 程 序 /getc()用 于 在 打 开 文 件

13、 中 获 取 一 个 字 符 while(ch=getc(fp)!=EOF) putchar(ch); fclose(fp); /关 闭 文 件 system(pause);return 0; 注 意 ! 初 学 者 往 往 会 犯 一 个 错 误 , 即 在 输 入 文 件 名 时 不 加 后 缀 名 , 请 注 意 加 上 ! 程 序 示 例 22 #include FILE *stream, *stream2; int main( void ) int numclosed; / Open for read (will fail if file crt_fopen.c does not e

14、xist) if( (stream = fopen( crt_fopen.c, r ) = NULL ) / C4996 / Note: fopen is deprecated; consider using fopen_s instead printf( The file crt_fopen.c was not openedn ); else printf( The file crt_fopen.c was openedn ); / Open for write if( (stream2 = fopen( data2, w+ ) = NULL ) / C4996 printf( The fi

15、le data2 was not openedn ); else printf( The file data2 was openedn ); / Close stream if it is not NULL if( stream) if ( fclose( stream ) ) printf( The file crt_fopen.c was not closedn ); / All other files are closed: numclosed = _fcloseall( ); printf( Number of files closed by _fcloseall: %un, numclosed ); 说 明 resource fopen ( string filename, string mode , bool use_include_path , resource zcontext ) fopen() 将 filename 指 定 的 名 字 资 源 绑 定 到 一 个 流 上 。 如 果 filename 是 scheme:/. 的 格 式 , 则 被 当 成 一 个 URL, PHP 将 搜 索 协 议 处 理 器 ( 也 被 称 为 封 装nt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号