程序设计基础-文件课件_第1页
程序设计基础-文件课件_第2页
程序设计基础-文件课件_第3页
程序设计基础-文件课件_第4页
程序设计基础-文件课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第8章文件主要内容:8.1文件的基本概念

8.2常用文件操作的标准函数8.3案例应用1精选课件ppt8.1文件的基本概念

计算机信息系统中,根据信息的存储时间,可以分为临时性信息和永久性信息。简单来说,临时信息存储在计算机系统临时存储设备(例如存储在计算机内存),这类信息随系统断电而丢失。永久性信息存储在计算机的永久性存储设备(例如存储在磁盘和光盘)。永久性的最小存储单元为文件,因此文件管理是计算机系统中的一个重要的问题。一般来说,每台计算机都有一个操作系统负责管理计算机的各种资源。操作系统的文件系统负责将外部设备(如硬盘、打印机、光驱等)的信息组织方式进行统一规划,提供统一的程序访问数据的方法。2精选课件ppt8.1.1文件概述对于操作系统来说,文件是存储在磁盘上的一个信息序列,操作系统为这个信息序列起一个名称,这个名称就叫做文件名(或文件标识符)。由于文件存储在外存中,外存的信息相对于内存来说是海量的,而且出于安全、规范的角度,不能够允许程序随意使用外存的信息,因此,当程序要使用文件时必须向操作系统申请使用,操作系统按规则授权给程序后程序才可以使用,使用完毕后,程序应该通知操作系统。3精选课件ppt终端文件中有3个文件是特殊的,每个C程序都用到。这3个文件是:标准输入文件(stdin)对应键盘,标准输出文件(stdout)对应终端屏幕,标准出错信息文件(stderr)对应终端屏幕。这3个文件对所有的C程序都是自动设置和打开的。当程序调用getchar()和scanf()时,就是从标准输入文件(键盘)读取信息;调用putchar()和printf()就是向标准输出文件(屏幕)输出信息。4精选课件ppt8.1.2文件的类别对于操作系统来说,文件就是一个由字节为单位的信息流序列。如果将C语言涉及的所有数据存储在文件中,必然有一个约定规则。一个整数存储在文件中可以有多种方式。如整数28036存储在文件可直接存储2个字节0x0B和0x14,也可以直接存储它的正文方式——‘2’、‘8’、‘0’、‘3’、‘6’。前者称为二进制方式,后者称为文本方式(亦称正文方式)。5精选课件ppt1.文本文件文本文件是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息,包括能用ASCII码字符表示的回车、换行等信息外,不能存储其他任何信息,因此文本文件不能存储声音、动画、图像、视频等信息。6精选课件ppt2.二进制文件

文件作为信息存储的一个基本单位,根据其存储信息的方式不同,分为文本文件(又名ASCII文件)和二进制文件。如果将存储的信息采用字符串方式来保存,那么称此类文件为文本文件。如果将存储的信息严格按其在内存中的存储形式来保存,则称此类文件为二进制文件。7精选课件ppt8.1.3文件的操作流程C语言对缓冲文件系统的使用是通过一系列库函数来实现,读写文件必须遵循一定的步骤。8精选课件pptC程序打开文件C程序对文件进行读写操作系统判断 C程序发出关闭命令

操作系统关闭文件

文件操作合法

文件操作合法 C程序打开失败执行C其它语句图8-2文件的使用流程

9精选课件ppt8.1.4文件的定义在一个应用程序中,可能同时处理多个文件,如何来描述并区分多个文件呢?在C语言中定义了一个结构体数据类型FILE来描述文件信息10精选课件ppt一般来讲,以f开头的函数均为文件处理函数。文件处理函数可以分为如下几类:1)文件打开与关闭函数;2)文件读写函数;3)文件定位函数;4)文件状态跟踪函数。11精选课件ppt8.2常用文件操作的标准函数标准C定义了文件库函数的原型在<stdio.h>头文件中。本节介绍文件的打开、读写及关闭函数。12精选课件ppt8.2.1文件的打开与关闭13精选课件ppt1.打开文件

在C语言中,除了3个标准文件外的所有文件在读写前都必须显式的打开。文件的打开操作是通过fopen()函数来实现的,此函数的声明在“stdio.h”中,函数原型如下:FILE*fopen(constchar*,constchar*mode);函数返回值——FILE类型指针。如果运行成功,fopen返回文件的地址,否则返NULL。14精选课件ppt2.关闭文件

在C语言中,文件的关闭是通过fclose()函数来实现。此函数的声明在“stdio.h”中,函数原型如下:intfclose(FILE*fp);函数返回值——int类型,如果为0,则表示文件关闭成功,否则表示失败。fclose()函数的作用是关闭已经打开的文件,要求操作系统将文件句柄fp所代表的文件系统进行关闭。15精选课件ppt8.2.2文本文件的读写文件打开之后,就可以进行读写操作。文件的读写操作通过一组库函数实现,分为读函数和写函数。常用的读写函数分为如下几类:1.字符的读写2.数值的读写3.格式化读写4.块的读写5.字符串的读写16精选课件ppt1.字符的读写fputc()函数的作用是从当前文件位置开始向文件输出一个字符函数形式参数说明如下:intc——准备输出的字符。FILE*stream——文件地址,为FILE*类型变量。函数返回值——int类型。如果返回值为-1(EOF),则表示字符输出失败,否则返回值为c,即与输出的字符相等。17精选课件pptfgetc()函数的作用是从当前文件位置读取一个字符函数形式参数说明如下:FILE*stream——用读写模式和只读模式打开的文件地址,为FILE*类型变量。函数返回值——int类型。如果返回值为-1,表示已经读到文件末尾,否则返回读到的字符。18精选课件ppt2.数值的读写getw()函数的作用是从文件读取一个字信息,函数的形式参数如下:FILE*stream——文件地址;函数返回值——如果成功读取,则返回当前读入的信息,否则返回EOF;19精选课件pptputw()函数的作用将一个字的信息输出到文件中,函数的形式参数如下:FILE*stream——文件地址;intw——整型数据;函数返回值——如果成功,与输入参数w的值相等,否则返回EOF。20精选课件ppt3.格式化读写1.fprintf()函数函数的意义是:将省略号表示的位置列出的表达式的值计算出来后,按mode中指定的格式输到有fp指向的文件中。21精选课件ppt2.fscanf()函数函数的意义:从fp指向的文件中,按mode中指定的格式逐个读取文本数据转换成指定的数据类型,附给对应指针指向的存储单元中。22精选课件ppt4.块的读写文件输入输出函数中还提供了块的输入输出函数,即将内存中的一段信息作为一个整体进行输入输出操作,其在“stdio.h”中的函数原型如下:size_tfread(void*ptr,size_tsize,size_tn,FILE*stream);size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream);其中size_t在“stdio.h”中的定义如下typedefunsignedsize_t;23精选课件ppt5.字符串的读写fgets()函数的形式参数如下:char*s——有效内存地址,以便可以存储从文件读取的字符串。intn——读取字符串的长度,确定从文件中读取多少个字符。实质上,此函数从文件中读取n-1个字符到当前的字符串中,然后自动添加字符串结束符‘\0’。但是如果此文件中一行长度小于n,则到此行的换行符为止,并将此换行符读取到字符串中。FILE*stream——文件地址24精选课件pptfputs()函数的形式参数如下:constchar*s——有效的字符串,此字符串中不包括‘\n’。intn——字符串长度。实质上,在向文件输出信息时,并不输出‘\0’。FILE*stream——文件地址。函数返回值——整型数据,如果函数运行成功,则返回0;否则返回EOF。25精选课件ppt8.2.3二进制文件的读写对二进制文件读写的库函数是fread()和fwrite(),由于它们用来将二进制代码的数据进行输入和输出,因此又称为直接输入输出函数。26精选课件ppt1.读二进制文件的函数fread()

fread()函数从fp指向的二进制文件中,读入count个大小为size个字节的数据块到buf所指向的内存中。如果执行成功,则返回实际读取的数据块的个数。例如,从已经打开的文件指针fp所指向的文件中读入10个长整数到数组longa[20]中,这10个数依次存储到a[9]开始的10个元素位置。27精选课件ppt2.写二进制文件的函数fwrite()fwrite()函数从buf所指向的内存中,读入count个大小为size个字节的数据块写入到fp指向的文件中。如果执行成功,则返回实际写入的数据块的个数。例如,将长整数数组a[20]的前10个元素写入文件f中。if(fwrite(a,sizeof(long),10,f)!=10)printf(”文件写出现错误!\n”);28精选课件ppt8.2.4文件的随机访问与定位文件可以理解为一个完整的数据流,因此可以将“数据流”分为文件头、文件尾和文件主体三个部分。在C语言中通过FILE类型指针描述文件流的位置,因此FILE类型指针又称为文件指针。在缺省情况下,文件的读取是按顺序进行的。在完成一段信息的读写之后,文件指针移动到其后的位置上准备读取下一次读写。在特殊情况下,需要对文件进行随机的读写,即读取当前位置的信息后,并不读取紧接其后的信息,而是根据需要读取特定位置处的信息。为了满足文件的随机读写操作,C语言中提供了文件指针定位函数。29精选课件ppt1.文件定位函数fseek()函数原型:intfseek(FILE*stream,longoffset,intwhence);函数的形式参数如下:FILE*stream——文件地址。longoffset——文件指针偏移量。intwhence——偏移起始位置。函数返回值——非零值表示是成功,0表示失败。30精选课件ppt2.将文件指针移动到文件开始位置的函数rewind()函数原型:voidrewind(FILE*stream);函数的形式参数如下:FILE*stream——文件地址。函数返回值——无此函数的作用是将当前文件指针重新移动到文件的开始位置,其功能相当于如下的程序段,将文件指针移动到文件头,并清除状态标志。31精选课件ppt3.获得文件指针当前位置的函数ftell()

函数原型:longftell(FILE*stream);FILE*stream——文件地址。函数返回值——运行成功,返回当前位置相对于文件开始的相对偏移量;否则返回-1。ftell()函数的作用是获得文件指针的当前位置,此位置为相对于文件开始位置的相对偏移量。32精选课件ppt8.2.5文件使用举例模拟DOS系统的COPY命令,实现文件复制。33精选课件ppt编写一个程序,从data.dat文本文件中读出一个字符,将其加密后写入data1.dat文件中,加密方式是字符的ASCII码加1。34精选课件ppt8.3案例应用35精选课件ppt本章小结

文件是指存储在外部介质上一组相关数据的集合。一批数据是以文件的形式存放在外部介质上的,而操作系统以文件为单位对数据进行管理。C语言所使用的磁盘文件系统有两类:一类称为缓冲文件系统,即标准文件系统;另一类称为非缓冲文件系统。36精选课件ppt在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。对磁盘文件的操作必须先打开,后读写,最后关闭。文件的打

温馨提示

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

评论

0/150

提交评论