




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 语语言言函函数数 fopen 函函数数简简介介 函函数数功功能能 打开一个文件 函函数数原原型型 FILE fopen const char path const char mode 相相关关函函数数 open fclose fopen s 1 wfopen 所所需需库库 返返回回值值 文件顺利打开后 指向该流的文件指针就会被返回 若果文件打开失败 则返回 NULL 并把错误代码存在 errno 中 一般而言 打开文件后会作一些文件读取或写入的动作 若打开文件失败 接下来 的读写动作也无法顺利进行 所以在 fopen 后请作错误判断及处理 参参数数说说明明 参数 path 字符串包含欲打开的文件路径及文件名 参数mode 字符串则代表着流 形态 mode 有下列几种形态字符串 r 打开只读文件 该文件必须存在 r 打开可读写的文件 该文件必须存在 rb 读写打开一个二进制文件 只允许读写数据 rt 读写打开一个文本文件 允许读和写 w 打开只写文件 若文件存在则文件长度清为0 即该文件内容会消失 若文件 不存在则建立该文件 w 打开可读写文件 若文件存在则文件长度清为零 即该文件内容会消失 若文 件不存在则建立该文件 a 以附加的方式打开只写文件 若文件不存在 则会建立该文件 如果文件存在 写入的数据会被加到文件尾 即文件原先的内容会被保留 EOF 符保留 a 以附加方式打开可读写的文件 若文件不存在 则会建立该文件 如果文件存 在 写入的数据会被加到文件尾后 即文件原先的内容会被保留 原来的 EOF 符 不保留 wb 只写打开或新建一个二进制文件 只允许写数据 wb 读写打开或建立一个二进制文件 允许读和写 wt 读写打开或着建立一个文本文件 允许读写 at 读写打开一个文本文件 允许读或在文本末追加数据 ab 读写打开一个二进制文件 允许读或在文件末追加数据 上述的形态字符串都可以再加一个 b 字符 如 rb w b 或 ab 等组合 加入 b 字符用来告诉函数库打开的文件为二进制文件 而非纯文字文件 不过在POSIX 系统 包含 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 只读方式打开 将文件指针指向文件头 r 读写方式打开 将文件指针指向文件头 w 写入方式打开 将文件指针指向文件头并将文件大小截为零 如果文件不存在则尝试 创建之 w 读写方式打开 将文件指针指向文件头并将文件大小截为零 如果文件不存在则尝试 创建之 a 写入方式打开 将文件指针指向文件末尾 如果文件不存在则尝试创建之 a 读写方式打开 将文件指针指向文件末尾 如果文件不存在则尝试创建之 x 创建并以写入方式打开 将文件指针指向文件头 如果文件已存在 则 fopen 调用 失败并返回 FALSE 并生成一条 E WARNING 级别的错误信息 如果文件不存在 则尝试创建之 这和给 底层的 open 2 系统调用指定 O EXCL O CREAT 标记是等 价的 此选项被 PHP 4 3 2 以及以后的版本所支持 仅能用于本地文件 x 创建并以读写方式打开 将文件指针指向文件头 如果文件已存在 则 fopen 调用 失败并返回 FALSE 并生成一条 E WARNING 级别的错误信息 如果文件不存在 则尝试创建之 这和给 底层的 open 2 系统调用指定 O EXCL O CREAT 标记是等 价的 此选项被 PHP 4 3 2 以及以后的版本所支持 仅能用于本地文件 注注 不同的操作系统家族具有不同的行结束习惯 当你写入一个文本文件并想插入一个新 行时 你需要使用符合你操作系统的行结束符号 基于 Unix 的系统使用 n 作为行结束 字符 基于 Windows 的系统使用 r n 作为行结束字符 基于 Macintosh 的系统使用 r 作为行结束字符 如果写入文件时使用了错误的行结束符号 则其它应用程序打开这些文件时可能会表现得 很怪异 Windows 下提供了一个文本转换标记 t 可以透明地将 n 转换为 r n 与此对应你还 可以使用 b 来强制使用二进制模式 这样就不会转换你的数据 要使用这些标记 要么 用 b 或者用 t 作为 mode 参数的最后一个字符 默认的转换模式依赖于 SAPI 和你使用的 PHP 版本 因此为了便于移植鼓励你总是指定 恰当的标记 当操作以 n 作为行结束定界符的纯文本文件时 如果你还期望这些文件可 以用于其它应用程序例如 Notepad 则应该在脚本中使用 t 模式 在所有其它情况下使 用 b 在操作二进制文件时如果没有指定 b 标记 可能会碰到一些奇怪的问题 包括坏掉的图 片文件以及关于 r n 字符的奇怪问题 注注 为移植性考虑 强烈建议在用 fopen 打开文件时总是使用 b 标记 注注 再一次 为移植性考虑 强烈建议你重写那些依赖于 t 模式的代码使其使用正确的行 结束符并改成 b 模式 如果也需要在 include path 中搜寻文件的话 可以将可选的第三个参数 use include path 设为 1 或 TRUE 如果打开失败 本函数返回 FALSE 程程序序示示例例 程程序序示示例例 1 include include 为了使用 exit int main int ch FILE fp char fname 50 用于存放文件名 printf 输入文件名 scanf s fname fp fopen fname r 只供读取 if fp NULL 如果失败了 printf 错误 exit 1 中止程序 getc 用于在打开文件中获取一个字符 while ch getc fp EOF putchar ch fclose fp 关闭文件 return 0 Djx include include 为了使用 exit int main int ch FILE fp char fname 50 用于存放文件名 printf 输入文件名 scanf s fname fp fopen fname r 只供读取 if fp NULL 如果失败了 printf 错误 exit 1 中止程序 getc 用于在打开文件中获取一个字符 while ch getc fp EOF putchar ch fclose fp 关闭文件 system pause return 0 注意 初学者往往会犯一个错误 即在输入文件名时不加后缀名 请注意加上 程程序序示示例例 2 2 include FILE stream stream2 int main void int numclosed Open for read will fail if file crt fopen c does not exist 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 opened n else printf The file crt fopen c was opened n Open for write if stream2 fopen data2 w NULL C4996 printf The file data2 was not opened n else printf The file data2 was opened n Close stream if it is not NULL if stream if fclose stream printf The file crt fopen c was not closed n All other files are closed numclosed fcloseall printf Number of files closed by fcloseall u n numclosed 说说明明 resource fopen string filename string mode bool use include path resource zcontext fopen 将 filename 指定的名字资源绑定到一个流上 如果 filename 是 scheme 的格式 则被当成一个 URL PHP 将搜索协议处理器 也被称为封装 协议 来处理此模式 如果该协议尚未注册封装协议 PHP 将发出一条消息来帮助检 查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去 如果 PHP 认为 filename 指定的是一个本地文件 将尝试在该文件上打开一个流 该文件必须是 PHP 可以访问的 因此需要确认文件访问权限允许该访问 如果激活了 安全模式 或者 open basedir 则会应用进一步的限制 2 函数名 fclose 功 能 关闭一个流 注意 使用 fclose 函数就可以把缓冲区内最后剩余的数据输 出到磁盘文件中 并释放文件指针和有关的缓冲区 用 法 int fclose FILE stream fread 函数和函数和 fwrite 函数函数 C C 编程 2009 07 01 21 14 23 阅读 1686 评论 3 字号 大中小 订阅 source 1 函数功能 用来读写一个数据块 2 一般调用形式 fread buffer size count fp fwrite buffer size count fp 3 说明 1 buffer 是一个指针 对 fread 来说 它是读入数据的存放地址 对 fwrite 来说 是要输出数据的地址 2 size 要读写的字节数 3 count 要进行读写多少个 size 字节的数据项 4 fp 文件型指针 注意 1 完成次写操 fwrite 作后必须关闭流 fclose 2 完成一次读操作 fread 后 如果没有关闭流 fclose 则指针 FILE fp 自动 向后移动前一次读写的长度 不关闭流继续下一次读操作则接着上次的输出继续输出 3 fprintf 按格式输入到流 其原型是 int fprintf FILE stream const char format argument 其用法和 printf 相同 不过不是写到控制台 而是写到流罢了 注 意的是返回值为此次操作写入到文件的字节数 如 int c fprintf fp s s d f str1 str2 a b str1 10 字节 str2 10 字节 a 2 字节 b 8 字节 c 为 33 因为写入时 不同的数据间自动加入一个空格 文件使用之后一定要关闭 否则将不能正确显示内容 fwrite 读入两个学生信息然后用 fwrite 存入文件 fread 用 fread 从文件中读出学生信息 fwrite c include define SIZE 2 struct student type char name 10 int num int age char addr 10 stud SIZE void save FILE fp int i if fp fopen stu list wb NULL printf cant open the file exit 0 for i 0 i SIZE i if fwrite fclose fp main int i for i 0 i SIZE i scanf s d d s save for i 0 i SIZE i printf s d d stud i name stud i num stud i age stud i addr fread c include define SIZE 2 struct student type char name 10 int num int age char addr 10 stud SIZE void read FILE fp int i if fp fopen stu list rb NULL printf cant open the file exit 0 for i 0 i SIZE i if fread fclose fp main int i read for i 0 i SIZE i printf s d d s stud i name stud i num stud i age stud i addr printf n printf 与与 fprintf 函数的区别函数的区别 printf 是标准输出流的输出函数 用来向屏幕这样的标准输出设备输出 而 fprintf 则是向文 件输出 将输出的内容输出到硬盘上的文件或是相当于文件的设备上 printf 是有缓冲的输出 fprintf 没有缓冲 fprintf 传送输出到一个流中的函数 原形 int fprintf FILE stream const char format argument 功能 向文件指针指向的文件输出 ASC 代码 向显示器输出错误信息 使用形式 fprintf 文件指针 输出格式 输出项系列 fprintf stderr 错误信息 使用实例 fprintf stream d c f i c f 其中定义 FILE stream int i char c float f 返回值 成功则返回输出的字节数 错误则返回 EOF 头文件 stdio h sprintf 格式化输出到数组的函数 原形 int sprintf buf format arg list 其中 char buf 功能 把 arg list 参量的值按 format 的格式输出到 buf 中 例 sprintf buffer 相对扇区号 s 其中 柱面号为 d 磁头号为 d 扇区号为 d string cyls head sector 其中 char buffer 100 char string int cyls head sector 返回值 实际写入数组的字符个数 头文件 stdio h sprintf 是个变参函数 定义如下 int sprintf char buffer const char format argument 除了前两个参数类型固定外 后面可以接任意多个参数 而它的精华 显然就在第二 个参数 格式化字符串上 printf 和 sprintf 都使用格式化字符串来指定串的格式 在格式串内部使用一些以 开头的 格式说明符 format specifications 来占据一个位置 在后边的变参列表中提供相应的 变量 最终 函数就会用相应位置的变量来替代那个说明符 产生一个调用者想要的字符串 格式化数字字符串 sprintf 最常见的应用之一莫过于把整数打印到字符串中 格式化读写函数 fscanf 和 fprintf fscanf 函数 fprintf 函数与前面使用的 scanf 和 printf 函数的功能相似 都是格式化读 写函数 两者的区别在于 fscanf 函数和 fprintf 函数的读写对象不是键盘和显示器 而是 磁盘文件 这两个函数的调用格式为 fscanf 文件指针 格式字符串 输入表列 fprintf 文件指针 格式字符串 输出表列 例如 fscanf fp d s fprintf fp d c j ch 用 fscanf 和 fprintf 函数也可以完成以上学生信息的问题 修改后的程序下所示 include struct stu char name 10 int num int age char addr 15 boya 2 boyb 2 pp qq main FILE fp char ch int i pp boya qq boyb if fp fopen stu list wb NULL printf Cannot open file strike any key exit getch exit 1 printf ninput data n for i 0 iname pp boya for i 0 iname pp num pp age pp addr rewind fp for i 0 iname printf n nname tnumber age addr n qq boyb for i 0 iname qq num qq age qq addr fclose fp Ferror 和和 clearerr 函数名 ferror 功 能 在调用各种输入输出函数 如 putc getc fread fwrite 等 时 如果出现错误 除了函数返回值有所反映外 还可以用 ferror 函数检查 它的一般调用形式为 ferroe fp 如果 ferror 返回值为 0 假 表示未出错 如果返回一个非零值 表示出错 应该注意 对同一个文件 每一次调用输入输出函数 均产生一个新的ferror 函 数值 因此 应当在调用一个输入输出函数后立即检 查 ferror 函数的值 否则信息会丢失 在执行 fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工组织设计对住宅项目成本的影响研究
- 工程项目质量管理研究
- 2023部编版五年级数学上册单元测试题库
- 个人土地租赁合同范本参考
- 八年级英语精美教案设计与课堂活动示范
- 物流配送车辆调度计划优化方案
- 幼儿园创意绘画课程方案
- 小学语文教案设计与表格式教学模板
- 古诗文《承天寺夜游》赏析与教学
- 企业信息化建设专项推进方案报告
- 工程竣工移交单(移交甲方、物业)
- 大学春耕活动方案
- 电力设施维护质量保证体系及措施
- 四大名著三国演义课件
- T/CHES 115-2023水库淤积及其影响评价技术规程
- 2025年河北省公需课《双碳目标下绿色能源转型趋势》答案
- 联通运营合作协议合同
- 8.1 走进人工智能 课件 2024-2025学年浙教版(2023)初中信息技术八年级下册
- 鄂尔多斯盆地地质特征与沉积模式分析
- 数字化赋能设计企业转型升级
- 鼻部解剖结构及其临床表现
评论
0/150
提交评论