重点《C/C程序设计》文件PPT课件_第1页
重点《C/C程序设计》文件PPT课件_第2页
重点《C/C程序设计》文件PPT课件_第3页
重点《C/C程序设计》文件PPT课件_第4页
重点《C/C程序设计》文件PPT课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

概述 开关文件 读写文件 文件定位 第七章文件 文件 存储在外部介质上数据的集合 是操作系统数据管理的单位 文件分类按文件的逻辑结构 记录文件 由具有一定结构的记录组成 定长和不定长 流式文件 由一个个字符 字节 数据顺序组成按存储介质 普通文件 存储介质文件 磁盘 磁带等 设备文件 非存储介质 键盘 显示器 打印机等 按数据的组织形式 文本文件 ASCII文件 每个字节存放一个字符的ASCII码二进制文件 数据按其在内存中的存储形式原样存放 C文件概述 使用数据文件的目的1 数据文件的改动不引起程序的改动 程序与数据分离2 不同程序可以访问同一数据文件中的数据 数据共享3 能长期保存程序运行的中间数据或结果数据 文本文件特点 存储量大 速度慢 便于对字符操作 二进制文件特点 存储量小 速度快 便于存放中间结果 文本文件特点 存储量大 速度慢 便于对字符操作 文件处理方法缓冲文件系统 高级文件系统 系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统 低级文件系统 由用户在程序中为每个文件设定缓冲区 文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio h中 typedefstruct int fd 文件号int cleft 缓冲区中剩下的字符数int mode 文件操作方式char next 文件当前读写位置char buff 文件缓冲区位置 FILE 文件类型指针指针变量说明 FILE fp 用法 文件打开时 系统自动建立文件结构体 并把指向它的指针返回来 程序通过这个指针获得文件信息 访问文件文件关闭后 它的文件结构体被释放 文件的基本操作步骤各步骤的含义 指向文件的指针变量在 stdio h 中struct iobuf char FAR ptr int cnt char FAR base char flag char file typedefstruct iobufFILE 打开文件 读写 创建 文件 关闭文件 typedefstruct int fd 文件号 int cleft 缓冲区剩下的字符 int mode 文件操作模式 char nextc 下一个字符指针 char buff 文件缓冲区指针 FILE 例如 FILE fp1 fp2 1 打开文件FILE fp fp fopen filename mode filename中可以带路径名 一般方法如下 FILE fp if fp fopen c doc exam txt w NULL puts Cannotopenthefile n exit 1 开关文件 Mode 方式 意义 r 读文本文件 w 写生成文本文件 a 向文本文件追加 rb 读打开二进制文件 wb 写生成进制文件 ab 向二进制文件追加 打开方式 mode Mode 方式 意义 r 读写文本文件 w 读写 创建 文本文件 a 向文本文件追加 rb 读打开 二进制文件 wb 读写 创建 二进制文件 ab 向二进制文件读写 追加 打开方式 mode 2 关闭文件一般方法如下 fclose FilePointer 或 if fclose filepointer NULL 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 它既可以用于二进制文件也可以用于文本文件 读写文件 2 输入输出数据块一次可I O一个数组或结构体类型的数据 后者与其它高级语言的记录读写 ANSIC设置了两个函数 fread buffer size count fp fwrite buffer size count fp 例 从键盘输入5个学生的数据 存为文本文件 然后读回验证 3 格式化I Ofprintf fp formstr outlist fscanf fp formstr outlist 文件的读写字符I O fputc与fgetcfputc函数原型 intfputc intc FILE fp 功能 把一字节代码c写入fp指向的文件中返值 正常 返回c 出错 为EOF fgetc函数原型 intfgetc FILE fp 功能 从fp指向的文件中读取一字节代码返值 正常 返回读到的代码值 读到文件尾或出错 为EOF 文件I O与终端I O defineputc ch fp fputc ch fp definegetc fp fgetc fp defineputchar c fputc c stdout definegetchar fgetc stdin 判断二进制文件是否结束while feof fp c fgetc fp 例从键盘输入字符 逐个存到磁盘文件中 直到输入 为止 includemain FILE fp charch filename out txt if fp fopen filename w NULL printf cannotopenfile n exit 0 printf Pleaseinputstring ch getchar while ch fputc ch fp putchar ch ch getchar fclose fp 例读文本文件内容 并显示 includemain FILE fp charch filename out txt if fp fopen filename r NULL printf cannotopenfile n exit 0 while ch fgetc fp EOF putchar ch fclose fp 判断文本文件是否结束 feof函数原型 intfeof FILE fp 功能 判断文件是否结束返值 文件结束 返回真 非0 文件未结束 返回0 includemain FILE in out charch infile 10 outfile 10 scanf s infile scanf s outfile if in fopen infile r NULL printf Cannotopeninfile n exit 0 if out fopen outfile w NULL printf Cannotopenoutfile n exit 0 while feof in fputc fgetc in out fclose in fclose out 数据块I O fread与fwrite函数原型 size tfread void buffer size tsize size tcount FILE fp size tfwrite void buffer size tsize size tcount FILE fp 功能 读 写数据块返值 成功 返回读 写的块数 出错或文件尾 返回0说明 typedefunsignedsize t buffer 指向要输入 输出数据块的首地址的指针size 每个要读 写的数据块的大小 字节数 count 要读 写的数据块的个数fp 要读 写的文件指针fread与fwrite一般用于二进制文件的输入 输出 例floatf 2 FILE fp fp fopen aa dat rb fread f 4 2 fp for i 0 i 2 i fread 例structstudent intnum charname 20 charsex intage floatscore 3 stud 10 for i 0 i 10 i fread 例从键盘输入4个学生数据 把他们转存到磁盘文件中去 include defineSIZE2structstudent type charname 10 intnum intage charaddr 15 stud SIZE main inti for i 0 i SIZE i scanf s d d s stud i name voidsave FILE fp inti if fp fopen d fengyi exe stu dat wb NULL printf cannotopenfile n return for i 0 i SIZE i if fwrite voiddisplay FILE fp inti if fp fopen d fengyi exe stu dat rb NULL printf cannotopenfile n return for i 0 i SIZE i fread 格式化I O fprintf与fscanf函数原型 intfprintf FILE fp constchar format argument intfscanf FILE fp constchar format address 功能 按格式对文件进行I O操作返值 成功 返回I O的个数 出错或文件尾 返回EOF 例fprintf fp d 6 2f i t 将i和t按 d 6 2f格式输出到fp文件fscanf fp d f 若文件中有3 4 5 则将3送入i 4 5送入t 例从键盘按格式输入数据存到磁盘文件中去 includemain chars 80 c 80 inta b FILE fp if fp fopen test w NULL puts can topenfile exit fscanf stdin s d s 字符串I O fgets与fputs函数原型 char fgets char s intn FILE fp intfputs char s FILE fp 功能 从fp指向的文件读 写一个字符串返值 fgets正常时返回读取字符串的首地址 出错或文件尾 返回NULLfputs正常时返回写入的最后一个字符 出错为EOF 例从键盘读入字符串存入文件 再从文件读回显示 fgets从fp所指文件读n 1个字符送入s指向的内存区 并在最后加一个 0 若读入n 1个字符前遇换行符或文件尾 EOF 即结束 fputs把s指向的字符串写入fp指向的文件 includemain FILE fp charstring 81 if fp fopen file txt w NULL printf cann topenfile exit 0 while strlen gets string 0 fputs string fp fputs n fp fclose fp if fp fopen file txt r NULL printf cann topenfile exit 0 while fgets string 81 fp NULL fputs string stdout fclose fp 1 返回文件开头rewind fp 2 随机定位fseek fp 偏移量 起始点 起始点名字数字表示文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2偏移量可以用 表示向前或向后移动 文件定位 文件的定位几个概念文件位置指针 指向当前读写位置的指针读写方式顺序读写 位置指针按字节位置顺序移动 叫 随机读写 位置指针按需要移动到任意位置 叫 rewind函数函数原型 voidrewind FILE fp 功能 重置文件位置指针到文件开头返值 无 例对一个磁盘文件进行显示和复制两次操作 includemain FILE fp1 fp2 fp1 fopen d fengyi bkc ch12 4 c r fp2 fopen d fengyi bkc ch12 41 c w while feof fp1 putchar getc fp1 rewind fp1 while feof fp1 putc getc fp1 fp2 fclose fp1 fclose fp2 fseek函数函数原型 intfseek FILE fp longoffset intwhence 功能 改变文件位置指针的位置返值 成功 返回0 失败 返回非0值 文件指针 位移量 以起始点为基点 移动的字节数 0向后移动 0向前移动 起始点文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2 例fseek fp 100L 0 fseek fp 50L 1 fseek fp 10L 2 ftell函数函数原型 longftell FILE fp 功能 返回位置指针当前位置 用相对文件开头的位移量表示 返值 成功 返回当前位置指针位置 失败 返回 1L 例磁盘文件上有3个学生数据 要求读入第1 3学生数据并显示

温馨提示

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

评论

0/150

提交评论