江南大学C语言程序设计本科第十三章ppt课件.ppt_第1页
江南大学C语言程序设计本科第十三章ppt课件.ppt_第2页
江南大学C语言程序设计本科第十三章ppt课件.ppt_第3页
江南大学C语言程序设计本科第十三章ppt课件.ppt_第4页
江南大学C语言程序设计本科第十三章ppt课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

回顾 结构体的使用共用体的使用枚举变量结构体数组结构体指针链表的使用 问题 1 前面题目的结果是后面的输入时 2 程序运行的结果需要长期保存 或有其他用途时 3 调试程序时 输入数据量多 引入文件 第13章文件 掌握文件的打开和关闭掌握并能熟练使用以下函数fputc fgtc fgets fputs fread fwrite fprintf fscanf Focus 一 文件的基本概念1 文件的一般概念文件 file 存储在外部介质上数据的集合 OS将外部设备也看作文件 终端的键盘 显示器均看作I O文件 第一节c文件概述 2 C的文件系统缓冲文件系统 系统自动为每个正在使用的文件系统在内存中开辟一个缓冲区 程序与文件之间的I O经由缓冲区 ANSIC标准采用缓冲文件系统 非缓冲文件系统 系统不自动开辟缓冲区 由程序为每个文件设定缓冲区 由于C与UNIX关系密切 UNIXI O系统使用非缓冲文件系统 因而多数C也兼容之 C的I O系统在程序员和设备间提供了一级抽象 这个抽象被称为流 stream 而实际设备则称为文件 files 文件由缓冲文件系统变换成抽象的逻辑设备流 C文件是字符 文本 流或二进制流 无其它高级语言所具有的记录界限 存取以字节为单位 I O的开始和结束仅受程序控制而不受流中符号的控制 共有两类流 文本流 text 和二进制流 binary 二 文件流与文件 文本流文本流 textstream 是一种字符序列 以ASCII码存放 每字符占一个字节 数值需要逐位转换 32767存为51 50 55 54 55计五个字节 n 变为一个回车 换行符号对 CR LFcarraigereturn linefeed ASCII码13 10 文件末有一字符 z ASCII码为26 二进制流二进制流 binarystream 是一种字节序列 数值以二进制数表示 32767存为7FFFH int型时占两个字节 不需转换 节省存储空间 从而方便存取 提高速度 标准流ANSIC有三个预定义的标准流 stdin stdout stderr 也称为标准 文件 它们都对应终端 程序运行时系统自动将它们打开 运行结束自动关闭 例如 使用scanf gets 等函数时使用stdin流 对应标准输入 键盘 使用printf puts 时 使用stdout流 对应标准输出 显示器 stderr流也对应标准输出 显示器 三 文件的基本操作步骤 打开文件 读写 创建 文件 关闭文件 在 stdio h 中 QC struct iobuf char FAR ptr int cnt char FAR base char flag char file typedefstruct iobuffile 例如 file fp1 fp2 typedefstruct int fd 文件号 int cleft 缓冲区剩下的字符 int mode 文件操作模式 char nextc 下一个字符指针 char buff 文件缓冲区指针 file 四 指向文件的指针变量 1 打开文件file fp fp fopen mode 为文件名 路径名 mode对文件的访问方式一般方法如下 file fp if fp fopen c doc exam txt w NULL puts cannotopenthefile n exit 1 第二节文件的打开与关闭 mode意义 r 读文本文件 w 写或创建文本文件 a 向文本文件追加 rb 读二进制文件 wb 写或创建二进制文件 ab 向二进制文件追加 mode意义 r 读写文本文件 w 读写 创建 文本文件 a 向文本文件追加 rb 读打开 二进制文件 wb 读写 创建 二进制文件 ab 向二进制文件读写 追加 2 关闭文件fclose 或 if fclose printf closeerror exit 2 使用FILE类型和fopen fclose 函数应包含stdio h 1 输入输出字符1 I O字符ch fgetc fp fputc ch fp 第三节读写文件 putchar ch 实际上是用fputc ch fp 定义的一个宏 defineputchar ch fputc ch stdout 默认输出到显示器即标准输出文件stdout 2 判断文件尾fgetc 在读到文件末尾时 返回文件结束标志EOF 在stdio h中定义为 1 此标志只适合于文本文件 因为二进制文件中的数值 1会与其相混 造成提前结束 常用feof 函数测试文件尾 若是文件结束返回值1 它既可以用于二进制文件也可以用于文本文件 feof 文件指针 返回值为1表示文件结束 例 假设软盘a的根目录下有一个ASCII码文件 abc dat 其内容为 Iamastudent 编程完成 1 显示文件 abc dat 的内容 2 把字符串 Youareaworker 写入文件 abc dat 3 再次显示文件 abc dat 的内容 分析 显示指定的文本文件内容 再写入新内容 必须打开文件并指定文件的使用方式为 r 表示对同一个文本文件先读后写 写入的新内容覆盖原有的旧内容 程序清单如下 includemain FILE fp char str Youareaworker intk if fp fopen a abc dat r NULL fp为NULL 表示文件打开失败 printf 文件不存在 n exit O while feof fp 当文件没有结束时 feof fp 为假 feof fp 为真 putchar fgetc fp 显示文件 abc dat 的原有内容 printf n rewind fp 把文件的位置指针移到文件的开始处 for k 0 str k 0 k fputc str k fp 写入新内容 rewind fp 把文件的位置指针移到文件的开始处 while feof fp 当文件没有结束时 feof fp 为假 feof fp 为真 putchar fgetc fp 显示文件 abc dar 的新内容 fclose fp printf n 运行结果 Iamastudent Youareaworker Y You Youareaworker z Yo 2 输入输出数据块一次可I O一个数组或结构体类型的数据ANSIC设置了两个函数 fread buffer size count fp fwrite buffer size count fp buffer 是一个指针 对fread来说 它是读入数据的存放地址 对fwrite来说 是要输出数据的地址 以上指的是起始地址 size 要读写的字节数 count 要进行读写多少个size字节的数据项 fp 文件型指针 例 文件sru list中有4个学生的有关数据 将它们读出在屏幕上显示出来 然后把它们重新存到磁盘文件上去 include stdio h defineSIZE4structstudent type charname l0 intnum intage charaddr l5 stud SIZE main FILE fP inti if fp fopen stu list rb NULL printf cannotopenfile xn return for i 0 i SIZE i fread 3 格式化I Ofprintf fp 格式字符串 输出表列 fscanf fp 格式字符串 输入表列 除fp外 其余同printf scanf 4 串输入输出fgets str1 n fp 从fp指定的文件中读出n 1个字符到str1 并在最后添加一个 0 或遇换行符 EOF符停止 fputs str2 fp 把str2的内容输出到fp指定的文件中 str2可以是字符串常量 字符数组 字符型指针 注 使用方法与gets puts类似 例 从键盘输入数据 97101 李明 男 20 和 97102 王小丽 女 18 存放在文件 txtl dat 中 再将文件 txtl dat 的数据读出并显示 includestructstd longxh charname 7 charsex 3 intnl main FILE fp structstda inti if fp fopen txt1 dat w NULL fp为NULL 表示文件打开失败 printf 磁盘空间不够 n exit 0 for i 0 i 2 i scanf ld s d 1 返回文件开头rewind fp 2 随机定位fseek fp 偏移量 基点 基点名字数字表示文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2偏移量可以 课堂例题 课后练习 上机作业 fscanf函数的正确调用形式是 A fscanf 文件指针 格式字符串 输出表列 B fscanf 格式字符串 文件指针 输出表列 C fscanf 格式字符串 输出表列 文件指针 D fscanf 文件指针 格式字符串 输入表列 D C语言标准库函数 fgets string n fp 的功能是 A 从文件fp中读取长度为n的字符串存入指针string指向的内存B 从文件fp中读取长度为n 1的字符串存入指针string指向的内存C 从文件fp中读取n个字符串存入指针string指向的内存D 从文件fp中读取长度不超过长度为n的字符串存入指针string指向的内存 B 输出结果为 includeFILE fp main ints 0 i a 4 15 25 33 58 b if fp fopen data txt w NULL printf error n exit 0 for i 0 i 4 i fprintf fp d a i fclose fp if fp fopen data txt r NULL printf cannotopenthisfile n exit 0 for i 1 i 4 i fscanf fp d 结果为73 上机作业 1 阅读下面的程序 指出它的功能 并上机调试验证 include stdio h voidmain FILE fp charch if fp fopen w NULL printf can topenthisfile exit 1 while ch getchar n fputc ch fp fclose fp 2 从键盘上输入任意10个数 把10个数按由小到大的顺序排列 然后把这组数输出到文件out txt中 再把这组数中相同的数据删得只剩一个 然后以每行4个数的格式追加到文件out txt中去 例如输入9 8 6 10 4 8 9 7 5 4 则文件out txt中的内容为 4 4 5 6 7 8 8 9 9 104 5 6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论