程序设计基础(C语言)上课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计基础(C语言)上课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 语言 上课
- 资源描述:
-
1、程序设计基础(C语言)上东北大学高级语言程序设计课程组程序设计基础(C语言)文件 程序设计基础(C语言)31.文件概念n什么是文件?文件是存储在外部介质上(介质:磁盘和磁带等外存储器)的数据或信息的集合n例如程序文件中保存着源程序数据文件中保存着数据声音文件中保存着声音数据n磁盘上的每个文件都有唯一的名字,进行标识,依据文件名找到相应的文件n为什么要使用文件文件的改动不能引起程序的改动,即程序与数据分离不同的程序可以访问同一数据文件中的数据,即数据共享能够长期保存程序运行的中间数据或结果数据程序设计基础(C语言)41.文件概念nC语言实现文件操作通过操作系统完成对文件的输入输出操作通过由C语言
2、的编译系统提供的一套用于文件操作的库函数,也称为“标准输入输出库”n文件的特点文件是一个有序的数据序列n保存的所有数据有着严格的排列次序(类似于数组)n要访问文件中的数据,必须按照它们的排列顺序,依次进行访问程序设计基础(C语言)51.文件概念n文件的分类数据的组织形式nASCII码文件ASCII码文件是将要存储的数据采用ASCII码的形式进行存储 数据按顺序组成一个一个的字符序列 每一个字符用一个ASCII码来表示,占用1个字节 ASCII码形式的文件在文本编辑器下可以直接阅读保存在内存中的所有数据在存入文件的时候都要先转换为等价的字符形式当要从文件中读取数据时,在将字符串转换为浮点数例如:
3、123.45(浮点数)将123.45转换为字符串“123.45”再存放程序设计基础(C语言)61.文件概念n文件的分类数据的组织形式n二进制文件将数据按其在内存中的存储方式(二进制方式)原样输出到文件中存放的 内存中的数据存入磁盘的时候不需要进行数据转换 磁盘上保存的数据采用语言规定的与内存数据一致的表示形式进行存储例如:123.45存放字二进制文件中将会占用4个字节(浮点数)程序设计基础(C语言)71.文件概念n文件的分类数据的组织形式n区别ASCII码文件较为直观、可读性好 方便人们的阅读和理解 可以直接在Windows下的记事本等工具直接观察 占用存储空间较多而且在数据输入输出时必须进行
4、二进制代码和ASCII码之间的转换二进制文件存储空间的利用效率高 输入输出时不需要进行转换,因而速度较快,可以节省磁盘空间和转换时间 二进制文件不能直接识别内存中的表示形式,不方便人们的阅读和理解,可读性差程序设计基础(C语言)81.文件概念n文件的分类文件的处理方式n数据写入文件或从文件中读出数据的过程 计算机内存计算机内存程程序序数数据据区区出入文件缓冲区出入文件缓冲区输出文件缓冲区输出文件缓冲区外存外存文件文件写文件写文件输出输出输入输入读文件读文件程序设计基础(C语言)91.文件概念n文件的分类文件的处理方式 n“写文件”将保存在内存中的数据写入磁盘 首先要建立一个“输出文件缓冲区”通
5、过该缓冲区可将内存中的数据存入磁盘,以文件的形式保存n“读文件”将保存在文件中的数据装入内存 首先要建立一个“输入文件缓冲区”,将文件中的数据装入缓冲区 然后再由缓冲区存入程序可以操作的内存数据区程序设计基础(C语言)101.文件概念n文件的分类文件的处理方式 nC语言系统对缓冲区的处理方式不同产生了两种不同的文件处理方式 缓冲文件系统 对每个正在使用的文件,系统自动地在内存中为其开辟一个缓冲区非缓冲文件系统 指系统不会自动开辟缓冲区,而要由程序自行设置文件的缓冲区 n提示在ANSI C83标准中取消了非缓冲文件系统 对文本文件和二进制文件均统一采用缓冲文件系统进行处理程序设计基础(C语言)1
6、11.文件概念n文件的分类文件的处理方式 n缓冲文件的特点缓冲区是一个连接计算机内存数据与外存文件的桥梁在内存开辟一个“缓冲区”,为程序中的每一个文件使用 执行读文件的操作时,从磁盘文件将数据先读如内存“缓冲区”,装满后再从内存“缓冲区”依此读入进接收的变量 执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”写满后再写入文件 由此可见,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,操作外存的次数越少,执行速度就越快、效率就越高一般来说:文件的“缓冲区”的大小随机器而定程序设计基础(C语言)122.文件的操作n语言中文件的操作主要是由语言库函数实现了解和掌握语
7、言提供的与文件有关的操作和规定n文件的定义n文件的状态n访问文件的基本操作文件操作的函数属于语言标准输入输出库中的函数n应在程序函数的前面使用预处理命令#include“#include 程序设计基础(C语言)132.文件的操作n文件指针 每个正在使用的文件都要说明一个FILE类型的结构变量n该类型就是文件读写所需要分配的内存区域的类型n利用一个结构体类型的变量存放该结构变量用于存放文件的有关信息 文件的名字、文件的性质、文件的当前状态等FILE 类型由系统定义n它包含的成员即FILE的各个分量由操作系统自动定义在头文件stdio.h中定义n通过文件结构的数据集合进行输入输出处理文件结构在打开
8、文件时由操作系统自动建立程序设计基础(C语言)142.文件的操作n文件指针 在头文件stdio.h中定义的结构FILE typedef struct typedef struct short levelshort level;/*文件的缓冲区级别(满或空的程度)文件的缓冲区级别(满或空的程度)*/unsigned flag unsigned flag;/*文件状态标志文件状态标志*/char fd char fd;/*文件号文件号*/int int cleft;/cleft;/*缓冲区的剩余字符(剩余空间)缓冲区的剩余字符(剩余空间)*/int int mode mode;/*文件的操作模式文
9、件的操作模式*/short size short size;/*缓冲区大小缓冲区大小*/char char*bufferbuffer;/*文件缓冲区的地址(位置)文件缓冲区的地址(位置)*/char char*curpcurp;/*当前地址指针(下一个字符的位置)当前地址指针(下一个字符的位置)*/short token short token;/*有效性检查控制单元有效性检查控制单元*/FILEFILE;程序设计基础(C语言)152.文件的操作n文件声明定义文件类型之后才能用其声明若干个FILE类型的变量n存放文件的信息在程序中,凡是要对已打开文件进行操作,都要通过指向该文件结构的指针n定义
10、FILE型(文件型)的指针变量通过文件指针变量找到与它相关的文件 如果需要同时处理n个文件,一般需要说明n个指针变量使它们分别指向n个不同的文件,以实现对文件的访问我们只需要定义文件类型的指针 通过这个指针,程序与操作系统之间交流信息,使用文件程序设计基础(C语言)162.文件的操作n文件声明格式n说明FILE是文件结构的类型名,标识结构类型文件型指针是指向文件结构的指针 例如:FILE*p;/*p是一指向文件结构的指针变量*/n提示语言中标准设备文件是由系统控制的 它们由系统自动打开和关闭 用户在程序中可以直接使用,无需再进行说明语言中提供了三个标准设备文件的指针 stdin 标准输入文件(
11、键盘)stdout 标准输出文件(显示器)stderr 标准错误输出文件(显示器)FILE*文件型指针名文件型指针名;程序设计基础(C语言)172.文件的操作n文件的操作过程打开文件n建立用户程序与文件的联系n系统为文件开辟文件缓冲区操作文件n对文件的读、写、追加和定位操作读操作:从文件中读出数据写操作:向文件中写入数据其他操作关闭文件n切断文件与程序的联系,将文件缓冲区的内容写入磁盘,并释放文件缓冲区程序设计基础(C语言)182.文件的操作n打开文件操作系统分配一块内存区域n可以在这个区域上对文件进行读写操作将该文件的基本状态信息装入内存的该区域为了在后面对文件内容读写是能够找到这个内存区域
12、,需要将这个内存区域的起始指针赋值给定义的FILE类型指针变量n通过库函数fopen调用实现目的n在程序与操作系统之间建立一种关联通过打开文件,程序把所要操作文件的要求:如要打开的文件名、文件的操作方式(读/写)等通知操作系统程序设计基础(C语言)192.文件的操作n打开文件fopen函数的调用形式n说明FILE是前面介绍的文件类型fp是一个指向FILE类型的指针变量 指向被打开的文件filename文件名 所要打开的文件名称mode文件使用方式 用具有特定含义的符号表示 FILEFILE*fp fp;fp=fopenfp=fopen(char char*filenamefilename,ch
13、ar char*modemode)程序设计基础(C语言)202.文件的操作n打开文件fopen函数的功能n以mode方式打开由文件名filename指定的文件该函数的返回值为指针类型n若文件打开成功返回一个指向该文件的指针n若文件打开失败返回一个空指针NULL程序设计基础(C语言)21例:打开文件的正确方法是例:打开文件的正确方法是#include“stdio.h#include“stdio.h”FILE FILE*fpfp;fp=fopenfp=fopen(“stu.datstu.dat”,“w”w”););/*以写方式打开当前目录下的以写方式打开当前目录下的stu.datstu.dat文件
14、文件 并将返回的指向并将返回的指向stu.datstu.dat文件的文件指针文件的文件指针 赋给文件类型指针变量赋给文件类型指针变量fpfp*/ifif(fpfp=NULL=NULL)printf printf(“cannot open filen”cannot open filen”););exitexit(0 0););2.文件的操作程序设计基础(C语言)22【例】以写方式打开一个【例】以写方式打开一个readme.txtreadme.txt文件。文件。#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpf
15、p;fp=fopenfp=fopen(“readme.txtreadme.txt”,“w”w”););ifif(fpfp=NULL=NULL)printfprintf(“file not found!”file not found!”););fclosefclose(fpfp););else else printf printf(“file opened ok!”file opened ok!”););可以在可以在fopenfopen打开文件时打开文件时检查函数的返回值是否检查函数的返回值是否为为NULLNULL以确定文件是否以确定文件是否真正打开,若文件打开真正打开,若文件打开失败,还使用读
16、写函数失败,还使用读写函数对文件进行读写操作将对文件进行读写操作将会出现错误。会出现错误。2.文件的操作程序设计基础(C语言)23也可以写成下面这种方式:也可以写成下面这种方式:#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpfp;fp=fopenfp=fopen(“readme.txtreadme.txt”,“w”w”););if if(fpfp=NULL=NULL)printf printf(“file not found!”file not found!”););exitexit(0 0););els
17、e else printf printf(“file opened ok!”file opened ok!”););exitexit(0 0)也是一个库)也是一个库函数,定义在函数,定义在“stdio.hstdio.h”中,它起的作用是:中,它起的作用是:(1 1)关闭所有文件;)关闭所有文件;(2 2)程序正常退出;)程序正常退出;(3 3)返回操作系统;)返回操作系统;(4 4)将()将(0 0)返回操作)返回操作系统。系统。一般情况下:一般情况下:exitexit(0 0)表示在程序设计者控制表示在程序设计者控制的范围内正常退出;的范围内正常退出;exitexit(!0!0)则表示程序)
18、则表示程序非正常退出。非正常退出。2.文件的操作程序设计基础(C语言)242.文件的操作n文件的关闭当对文件操作结束后,程序要通知操作系统文件使用完毕n关闭该文件意味着释放文件指针以供别的程序使用 可以避免文件中数据的丢失否则容易导致对文件的误操作 尤其是刚对文件进行写操作,如不关闭文件,可能会丢失刚刚写入的数据n关闭文件采用 C库函数fclose程序设计基础(C语言)252.文件的操作n文件的关闭fclose函数的调用形式n说明文件指针是通过fopen打开的文件fclose函数关闭fopen打开的文件fclose函数返回值 返回值为整型 正常关闭时返回为0,否则返回为非0数,表示关闭出错函数
19、的功能n关闭由文件指针指定的文件切断缓冲区与该文件的联系释放文件指针fclose(文件指针文件指针);程序设计基础(C语言)26例:以读方式打开一个文本文件例:以读方式打开一个文本文件readme.txtreadme.txt然后关闭该文件。然后关闭该文件。#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpfp;fp=fopenfp=fopen(“readme.txtreadme.txt”,“r”r”););if if(fpfp=NULL=NULL)printfprintf(“file not found!n”
20、file not found!n”););else else printfprintf(“file opened ok!n”file opened ok!n”););fclosefclose(fpfp););printfprintf(“file closed!n”file closed!n”););2.文件的操作程序设计基础(C语言)27文件的读写是整个文件操作的核心,也是最灵活多变的部分。文件的读写是整个文件操作的核心,也是最灵活多变的部分。针对文本文件和二进制文件的不同性质进行分类操作,对文本针对文本文件和二进制文件的不同性质进行分类操作,对文本文件可按字符读写或按字符串读写;对二进制文件
21、可按成块读写或文件可按字符读写或按字符串读写;对二进制文件可按成块读写或格式化读写。各种格式化读写。各种C C语言编译系统都提供了丰富的文件读写函数,语言编译系统都提供了丰富的文件读写函数,有一些库函数事实上已成为标准。有一些库函数事实上已成为标准。读写字符读写字符 C C提供提供fgetcfgetc和和fputcfputc函数对文本文件进行字符的读写。函数对文本文件进行字符的读写。函数定义格式:函数定义格式:fgetc和和fputcfgetc函数从输入流的当前位置返回一个字函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符符,并将文件指针指示器移到下一个字符处,如果已经到文
22、件尾部,函数返回处,如果已经到文件尾部,函数返回EOF,此时表示本次操作结束。此时表示本次操作结束。fputc函数完成将函数完成将字符的值写入所指定的流文件的当前位置字符的值写入所指定的流文件的当前位置处,并将文件指针后移一位。该函数的返处,并将文件指针后移一位。该函数的返回值是所写入字符的值,出错时返回回值是所写入字符的值,出错时返回EOF。2.文件的操作程序设计基础(C语言)28例:从键盘输入字符存储在磁盘文件例:从键盘输入字符存储在磁盘文件test.txttest.txt中。中。#include stdio.h#include stdio.h main()main()FILE FILE
23、*fpfp;char c;char c;fp=fopen(test.txt,w fp=fopen(test.txt,w);/);/*以写的方式打开文件以写的方式打开文件*/if(fp if(fp=NULL)=NULL)printf(File printf(File doesnt existn);doesnt existn);exit(0);exit(0);while(c=fgetchar while(c=fgetchar()!=n);()!=n);/*只要输入字符为非空格符只要输入字符为非空格符*/fputc(c fputc(c,fpfp);/);/*写入文件一个字符写入文件一个字符 */fc
24、lose(fp fclose(fp););程序设计基础(C语言)29读写字符串读写字符串 fgetsfgets()函数从文件中读取至多()函数从文件中读取至多num-1num-1个字符,并将其放入个字符,并将其放入 strstr指向的数组中。函数形式为:指向的数组中。函数形式为:char char*fgetsfgets(char char*strstr,intint num num,FILE FILE*STREAMSTREAM)fputsfputs()函数将()函数将strstr指向的字符串写入文件,操作成功时,函指向的字符串写入文件,操作成功时,函数返回值为数返回值为0 0值,失败时返回非值
25、,失败时返回非0 0值。函数形式为:值。函数形式为:int fputsint fputs(char char*strstr,FIILE FIILE*streamstream)【例】从一个文本文件中【例】从一个文本文件中test1.txt中读出字符串,再写入另一个文中读出字符串,再写入另一个文 件件test2.txt中。中。#include#include计算机及程序设计概述计算机和计算机程序程序设计基础(C语言)31计算机的基本工作原理程序设计基础(C语言)32计算机硬件和计算机软件n计算机硬件主机外部设备n计算机软件裸机要使计算机解决各种实际问题,必须有软件的支持,计算机软件着重研究如何管理
展开阅读全文