C程序设计第十一章_第1页
C程序设计第十一章_第2页
C程序设计第十一章_第3页
C程序设计第十一章_第4页
C程序设计第十一章_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

ProgramminginCLanguage 第十一章文件 C程序设计 教学重点 文件及文件类型指针概念文件的操作 打开 读写 关闭常用的文件系统函数 C程序设计第十一章文件 11 1文件概述 文件的定义存储在外部介质上的数据的集合 文件名称文件名 扩展名 在C程序中的数据文件按存储格式分 以字符形式存储的文件称文本文件或ASCII码文件以二进制形式存放的文件称二进制文件 数据文件的存储格式 例 数据12345678按二进制数存放 4个字节按字符存放 8个字节 二进制文件 文本文件 11 1文件概述 文本文件与二进制文件的区别文本文件阅读方便 直观 便于对字符逐个输入 出 但占存储空间多 花费转换时间 二进制文件由于一个字节并不对应一个字符 不能直接显示文件内容 但节省存储空间 不需转换 数据流向 缓冲区 外存储器 标准设备文件 键盘 显示器 11 1文件概述 FILE文件类型在stdio h中定义了一个FILE结构体类型 该结构体中存放有关打开文件的信息 文件名 文件状态 数据缓冲区位置 文件读写的当前位置等 文件类型指针文件的操作 都必须通过指向文件类型的指针变量来进行 即用户必须定义一个文件类型的指针 文件类型指针的定义FILE 文件结构体指针变量名 11 1文件概述 文件的操作打开文件 建立文件缓冲区 获取指向FILE类型结构体变量的指针 读写文件 通过文件类型指针 调用读写函数对文件进行读写操作 关闭文件 释放文件缓冲区 释放文件指针所指的FILE类型结构体变量 打开文件fopen函数函数原型FILE fopen char filename char mode 功能 打开名为filename的文件 函数的返回值为指向该文件的FILE结构体类型变量的首地址 打开文件失败则返回NULL mode 打开文件的使用方式 用字符串表示 参见教材P 240表11 1 例 以只读方式打开文本文件d vc abc txt FILE fp fp fopen d vc abc txt r 通常需要检查文件打开是否成功 以下是文件打开常用的程序段 if fp fopen d vc abc txt r NULL printf Openfileerror n exit 0 11 2文件的打开和关闭 函数exit 0 的功能 终止程序头文件stdlib h 11 2文件的打开和关闭 关闭文件函数原型 intfclose File fp 功能 确保最后输出到文件缓冲区中的内容 无论是否已满 立即写入到对应的外存文件中 释放fp所指向的文件结构体和文件缓冲区 函数返回非0表示出错 返回0则表示文件已被正常关闭 例 FILE fp 打开当前目录下的文本文件abc txtfp fopen abc txt r fclose fp 11 3文件的读写 文件结构体类型中 有一个 读写位置指针 指向当前读写的位置 当打开一个文件时 读写位置指针指向文件中所有数据项之前 每进行一次文件的读写 读写位置指针都将自动向后移动 移至下一个读写位置 11 3文件的读写 C提供不同的读写文件的函数 文本文件的读写fgetcfputc读写一个字符fgetsfputs读写一个字符串fscanffprintf格式化读写二进制文件的读写freadfwrite读写一个 内存块 11 3文件的读写 fgetc函数 字符输入函数fgetc函数原型 intfgetc FILE fp 功能 从fp所指的文本文件的当前读写位置读入一个字符 函数返回该字符的ASCII值 若到文件结束标志则返回EOF 1 从文件读入一个字符后 文件读写位置向后移动一个字节 常用方法 c fgetc fp c为字符型变量 例 FILE fp charch fp fopen d vc abc txt r ch fgetc fp putchar ch 从文件当前读写位置读取一个字符 输出到显示器 11 3文件的读写 对于文本文件 判断文件是否结束 可以采用以下方法 while ch fgetc fp EOF 读数据 处理 在stdio h中定义EOF为 1 例 FILE fp charch fp fopen d vc abc txt r while ch fgetc fp EOF putchar ch 11 3文件的读写 feof函数 feof函数 判断是否读到文件末尾函数原型 intfeof FILE fp 功能 当读到文件末尾时返回非0值 否则返回0 使用方法 适用于文本文件或二进制文件while feof fp 读数据 处理 例 FILE fp charch fp fopen d vc abc txt r while feof fp ch fgetc fp putchar ch 11 3文件的读写 fputc函数 字符输出函数fputc函数原型 intfputc charch FILE fp 功能 在fp所指的文本文件的当前读写位置写入一个字符 写入字符成功函数返回该字符的ASCII值 否则返回值为EOF 1 向文件写入一个字符后 文件读写位置向后移动一个字节 常用方法 fputc c fp c为字符型变量 例 FILE fp charch fp fopen d vc abc txt w ch getchar fputc ch fp putchar ch 将ch写到文件的当前读写位置 并输出ch到显示器 fgetc与fputc举例 例 输入一个字符串 假定每行字符不超过80个 要求将该字符串写入文本文件a dat中 然后再将文件中的内容输出到显示器 include includevoidmain FILE fp chars 80 ch inti if fp fopen a dat w NULL printf openfileerror n exit 0 gets s for i 0 s i 0 i fputc s i fp fclose fp if fp fopen a dat r NULL printf openfileerror n exit 0 while feof fp ch fgetc fp putchar ch fclose fp fgetc与fputc举例 例 统计当前目录下文本文件a dat中 a 字符的个数 include includevoidmain FILE fp charch intn 0 统计个数if fp fopen a dat r NULL printf openfileerror n exit 0 while ch fgetc fp EOF 从文件中读取数据if ch a n fclose fp printf n d n n fgetc与fputc举例 例 将文本文件a dat中的内容除空格以外 全部复制到文本文件b dat中 include includevoidmain FILE fp1 fp2 charch if fp1 fopen a dat r NULL 打开a dat printf openfileerror n exit 0 if fp2 fopen b dat w NULL 打开b dat printf openfileerror n exit 0 while feof fp1 当文件a dat未结束 ch fgetc fp1 从文件a dat中读取数据if ch fputc ch fp2 写入文件b dat中 fclose fp1 fclose fp2 11 3文件的读写 fscanf函数 格式化输入函数函数原型 intfscanf FILE fp char format 地址列表 功能 按照格式控制字符串format所给定的输入格式 从fp所指向的文件当前读写位置读取的数据 从文件读取 并按地址列表存入指定的存储单元 从文件读取数据后 文件读写位置向后作相应的移动 例 FILE fp charch fp fopen d vc abc txt r while feof fp fscanf fp c 11 3文件的读写 fprintf函数 格式化输出函数函数原型 intfprintf FILE fp char format 输出表 功能 按照格式控制字符串format所给定的输出格式 将输出表中各表达式值输出 写 到fp所指向文件的当前读写位置 向文件输出数据后 文件读写位置向后作相应的移动 例 FILE fp charch fp fopen d vc abc txt w ch getchar fprintf fp c ch putchar ch fscanf与fprintf举例 例1 从键盘输入40个学生的英语成绩 存放在新建的文本文件s dat中 include includevoidmain FILE fp inti score if fp fopen s dat w NULL printf openfileerror n exit 0 for i 1 i 40 i scanf d fscanf与fprintf举例 例2 从文本文件s dat中读取学生的英语成绩 不超过100个 将成绩输出到显示器 include includevoidmain FILE fp inti 0 score 100 n if fp fopen s dat r NULL printf openfileerror n exit 0 while feof fp fscanf fp d fscanf与fprintf举例 例 从键盘输入40个学生的学号 两门功课的成绩 平均分 存放在新建文本文件s dat中 include includestructstudent longn ints 2 floataver voidmain FILE fp structstudenta inti if fp fopen s dat w NULL printf openfileerror n exit 0 for i 1 i 40 i scanf ld d d fscanf与fprintf举例 例 文本文件s dat中存放了若干个学生的学号 两门功课的成绩 平均分 要求将有不及格成绩的学生学号打印出来 include includestructstudent longn ints 2 floataver voidmain FILE fp structstudenta if fp fopen s dat r NULL printf openfileerror n exit 0 while feof fp fscanf fp ld d d f n 11 4文件定位函数 C提供移动文件读写位置指针的函数rewind函数 移动文件读写位置指针到文件头voidrewind FILE fp fseek函数 移动文件读写位置指针intfseek FILE fp longn unsignedswitch 其中 n表示移动的字节数 switch表示移动的起点位置 0表示从文件头开始 1表示从当前指针位置开始 2表示从文件末尾开始 文件定位函数可以便于文件的随机读写 本章作业 编写程序 在当前目录下新建一个文本文件1 dat 从键盘输入10个整数 将些整数写入文件1 dat中 编写函数voidsort int x intn 对一维数组x的n个数组元素按升序进行排序 编写主函数 从第一题的文本文件1 dat中读取数据 存放到一维数组a中 调用sort函数对数组a进行排序 并将排序后的各数组元素写

温馨提示

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

评论

0/150

提交评论