计算机程序设计基础课程教学.ppt
《计算机程序设计基础课程教学.ppt》由会员分享,可在线阅读,更多相关《计算机程序设计基础课程教学.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础乔乔 林林计算机程序设计基础计算机程序设计基础Email:Email:Tel:62780973Tel:62780973清华大学计算机科学与技术系清华大学计算机科学与技术系2清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础第十章 文件与数据存储学习目标学习目标掌握文件的基本概念掌握文件的基本概念掌握文件的基本概念掌握文件的基本概念学会使用常用的文件操作函数进行文件读写学会使用常用的文件操作函数进行文件读写学会使用常用的文件操作函数进行文件读写学
2、会使用常用的文件操作函数进行文件读写会使用文件存储、访问和管理数据会使用文件存储、访问和管理数据会使用文件存储、访问和管理数据会使用文件存储、访问和管理数据3清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础10.1 文件的基本概念数据的保存与持久化数据的保存与持久化在程序结束时数据仍有效在程序结束时数据仍有效在程序结束时数据仍有效在程序结束时数据仍有效文件的定义文件的定义一组相关信息的集合一组相关信息的集合一组相关信息的集合一组相关信息的集合存储于某种存储介质上存储于某种存储介质上存储于某种存储介质上存储于某种存储介质上具有某种特定格式,其中
3、的信息也具有相同的含具有某种特定格式,其中的信息也具有相同的含具有某种特定格式,其中的信息也具有相同的含具有某种特定格式,其中的信息也具有相同的含义,需要用不同的方法存取义,需要用不同的方法存取义,需要用不同的方法存取义,需要用不同的方法存取文件结构体与文件指针文件结构体与文件指针4清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件的类型顺序文件与随机文件顺序文件与随机文件顺序文件:只能顺序访问其中的信息顺序文件:只能顺序访问其中的信息顺序文件:只能顺序访问其中的信息顺序文件:只能顺序访问其中的信息 例:存储在磁带上的文件只能顺序访问例:存
4、储在磁带上的文件只能顺序访问例:存储在磁带上的文件只能顺序访问例:存储在磁带上的文件只能顺序访问随机文件:可以随机访问文件的任一部分信息,随机文件:可以随机访问文件的任一部分信息,随机文件:可以随机访问文件的任一部分信息,随机文件:可以随机访问文件的任一部分信息,可以指定读写位置可以指定读写位置可以指定读写位置可以指定读写位置二进制文件与文本文件二进制文件与文本文件文本文件:信息以字符形式存储,有分行信息,文本文件:信息以字符形式存储,有分行信息,文本文件:信息以字符形式存储,有分行信息,文本文件:信息以字符形式存储,有分行信息,阅读目标为程序员与程序阅读目标为程序员与程序阅读目标为程序员与程
5、序阅读目标为程序员与程序二进制文件:文件以二进制码存储,无分行信息,二进制文件:文件以二进制码存储,无分行信息,二进制文件:文件以二进制码存储,无分行信息,二进制文件:文件以二进制码存储,无分行信息,阅读目标为程序阅读目标为程序阅读目标为程序阅读目标为程序5清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础10.2 基本文件操作文件打开与关闭操作文件打开与关闭操作文件打开与关闭操作文件打开与关闭操作 FILE*FILE*fopenfopen(const char*(const char*filenamefilename,const char*,
6、const char*modemode););int int fclosefclose(FILE*(FILE*fpfp););文件状态与缓冲区操作文件状态与缓冲区操作文件状态与缓冲区操作文件状态与缓冲区操作 int int feoffeof(FILE*(FILE*fpfp););int int fflushfflush(FILE*(FILE*fpfp););文件指针操作文件指针操作文件指针操作文件指针操作 void void rewindrewind(FILE*(FILE*fpfp););int int fseekfseek(FILE*(FILE*fpfp,long,long offsetof
7、fset,int,int fromwherefromwhere););long long ftellftell(FILE*(FILE*fpfp););6清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础10.2 基本文件操作文件读写操作文件读写操作文件读写操作文件读写操作 int int fprintffprintf(FILE*(FILE*fpfp,const char*,const char*fmtfmt,);,);int int fscanffscanf(FILE*(FILE*fpfp,const char*,const char*fmtf
8、mt,);,);int int fgetcfgetc(FILE*(FILE*fpfp););char*char*fgetsfgets(char*(char*strstr,int,int n n,FILE*,FILE*fpfp););int int fputcfputc(int(int chch,FILE*,FILE*fpfp););char char fputsfputs(char*(char*strstr,FILE*,FILE*fpfp););int int freadfread(void*(void*bufbuf,int,int sizesize,int,int countcount,FI
9、LE*,FILE*fpfp););int int fwritefwrite(void*(void*bufbuf,int,int sizesize,int,int countcount,FILE*,FILE*fpfp););7清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件打开操作函数原型函数原型FILE*FILE*fopenfopen(const char*(const char*filenamefilename,const char*,const char*modemode););返回值返回值调用成功返回文件指针,调用成功返回文件指针,
10、调用成功返回文件指针,调用成功返回文件指针,失败返回失败返回失败返回失败返回NULLNULL函数参数函数参数filenamefilename:文件名字符串,可以包含路径名文件名字符串,可以包含路径名文件名字符串,可以包含路径名文件名字符串,可以包含路径名modemode:文件打开模式文件打开模式文件打开模式文件打开模式8清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件打开模式modemode:文件打开模式文件打开模式文件打开模式文件打开模式 r r:读,若文件不存在,返回读,若文件不存在,返回读,若文件不存在,返回读,若文件不存在,返回N
11、ULLNULL ww:写,若文件不存在,创建,若已存在,删除写,若文件不存在,创建,若已存在,删除写,若文件不存在,创建,若已存在,删除写,若文件不存在,创建,若已存在,删除 a a:追加,若文件不存在,创建,若已存在,添加到文件追加,若文件不存在,创建,若已存在,添加到文件追加,若文件不存在,创建,若已存在,添加到文件追加,若文件不存在,创建,若已存在,添加到文件尾部尾部尾部尾部 r r+、ww+:读写,若文件不存在,创建,若已存在,覆盖读写,若文件不存在,创建,若已存在,覆盖读写,若文件不存在,创建,若已存在,覆盖读写,若文件不存在,创建,若已存在,覆盖 a a+:读与追加,若文件不存在创
12、建,若已存在,覆盖读与追加,若文件不存在创建,若已存在,覆盖读与追加,若文件不存在创建,若已存在,覆盖读与追加,若文件不存在创建,若已存在,覆盖 b b:二进制格式二进制格式二进制格式二进制格式示示示示 例例例例“rbrb”:读模式打开二进制文件读模式打开二进制文件读模式打开二进制文件读模式打开二进制文件“ww+”+”:读写模式打开文本文件读写模式打开文本文件读写模式打开文本文件读写模式打开文本文件9清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件打开示例文件打开应用文件打开应用#include#include#include#inclu
13、de int int mainmain()()FILE*FILE*fpfp;char char filenamefilename40,40,modemode4;4;while(1)while(1)/*/*输入文件名和打开方式输入文件名和打开方式输入文件名和打开方式输入文件名和打开方式*/*/printfprintf(“(“n nEnter a filename:“);Enter a filename:“);getsgets(filenamefilename););/*/*输入文件名输入文件名输入文件名输入文件名*/*/printfprintf(“(“n nEnter a mode(max 3
14、characters):“);Enter a mode(max 3 characters):“);getsgets(mode mode););/*/*输入打开方式输入打开方式输入打开方式输入打开方式*/*/10清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件打开示例 /*/*打开文件打开文件打开文件打开文件*/*/if(if(fpfp=fopenfopen(filenamefilename,modemode)!=)!=NULLNULL)printfprintf(“(“n nSuccessful opening%Successful ope
15、ning%s s in mode%in mode%s s.n n“,“,filenamefilename,mode mode););/*/*输出成功信息输出成功信息输出成功信息输出成功信息*/*/fclosefclose(fp fp););/*/*关闭文件关闭文件关闭文件关闭文件*/*/elseelse fprintffprintf(stderrstderr,“,“n nError opening file%Error opening file%s s in mode%in mode%s s.n n“,“,filenamefilename,mode mode););/*/*输出不成功信息输出不
16、成功信息输出不成功信息输出不成功信息*/*/*/*询问是否结束询问是否结束询问是否结束询问是否结束*/*/putsputs(“Enter x to exit,any other to continue.“);(“Enter x to exit,any other to continue.“);if(if(getcgetc(stdinstdin)=x)break;)=x)break;else continue;else continue;11清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础预定义的标准文件标准文件:输入输出流标准文件:输入输出流
17、stdinstdin:标准输入设备,一般为键盘标准输入设备,一般为键盘标准输入设备,一般为键盘标准输入设备,一般为键盘stdoutstdout:标准输出设备,一般为屏幕标准输出设备,一般为屏幕标准输出设备,一般为屏幕标准输出设备,一般为屏幕stderrstderr:标准错误输出设备,一般为屏幕标准错误输出设备,一般为屏幕标准错误输出设备,一般为屏幕标准错误输出设备,一般为屏幕12清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件关闭操作函数原型函数原型关闭单个文件:关闭单个文件:关闭单个文件:关闭单个文件:int int fclosefcl
18、ose(FILE*(FILE*fpfp););关闭除标准文件之外的所有文件:关闭除标准文件之外的所有文件:关闭除标准文件之外的所有文件:关闭除标准文件之外的所有文件:int int fcloseallfcloseall();();文件缓冲区文件缓冲区外部块设备与内部数据流间的接口(中转站)外部块设备与内部数据流间的接口(中转站)外部块设备与内部数据流间的接口(中转站)外部块设备与内部数据流间的接口(中转站)清理文件缓冲区:清理文件缓冲区:清理文件缓冲区:清理文件缓冲区:int int fflushfflush(FILE*(FILE*fpfp););清理所有文件的缓冲区:清理所有文件的缓冲区:清
19、理所有文件的缓冲区:清理所有文件的缓冲区:int int fflushallfflushall();();13清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件关闭示例将磁盘文件中的信息复制到新文件中将磁盘文件中的信息复制到新文件中#include#include void void mainmain()()FILE*FILE*inin,*,*outout;char;char innameinname12,12,outnameoutname12;12;scanfscanf(“%s”,(“%s”,innameinname););scanfsc
20、anf(“%s”,(“%s”,outnameoutname););if(if(inin=fopenfopen(innameinname,“r”)=,“r”)=NULLNULL)exit(0);)exit(0);if(if(outout=fopenfopen(outnameoutname,“w”)=,“w”)=NULLNULL)exit(0);)exit(0);while(!while(!feoffeof(inin)fputcfputc(fgetcfgetc(inin),),outout););fclosefclose(inin););fclosefclose(outout););14清华大学计
21、算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件格式化输入输出操作函数原型函数原型格式化输出:格式化输出:格式化输出:格式化输出:int int fprintffprintf(FILE*(FILE*fpfp,const char*,const char*fmtfmt,);,);格式化输入:格式化输入:格式化输入:格式化输入:int int fscanffscanf(FILE*(FILE*fpfp,const char*,const char*fmtfmt,);,);说说 明明与标准格式化输入输出函数功能基本相同与标准格式化输入输出函数功能基本相同与
22、标准格式化输入输出函数功能基本相同与标准格式化输入输出函数功能基本相同差别:多了文件指针参数,输入源或输出目的均差别:多了文件指针参数,输入源或输出目的均差别:多了文件指针参数,输入源或输出目的均差别:多了文件指针参数,输入源或输出目的均是文件,而不是标准设备是文件,而不是标准设备是文件,而不是标准设备是文件,而不是标准设备 思考:思考:思考:思考:fprintffprintf(stdoutstdout,);=,);=printfprintf();?();?15清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件格式化输出示例将用户输入的将用
23、户输入的 5 5 个浮点数写入文件个浮点数写入文件#include#include#include#include void void clear_kbclear_kb();();int int mainmain()()FILE*FILE*fpfp;float float datadata5;5;int int countcount;char char filenamefilename20;20;putsputs(“Enter 5 floating-point numerical values.“);(“Enter 5 floating-point numerical values.“);fo
24、r(for(countcount=0;=0;countcount5;5;countcount+)+)scanfscanf(“%(“%f f“,&“,&datadata countcount););clear_kbclear_kb();();/*/*清除键盘缓冲区清除键盘缓冲区清除键盘缓冲区清除键盘缓冲区*/*/16清华大学计算机科学与技术系清华大学计算机科学与技术系http:/计计算算机机程程序序设设计计基基础础文件格式化输出示例 putsputs(“Enter a name for the file.“);(“Enter a name for the file.“);getsgets(fil
25、ename filename););if(if(fpfp=fopenfopen(filenamefilename,“w“)=,“w“)=NULL NULL)fprintffprintf(stderrstderr,“Error opening file%,“Error opening file%s s.“,.“,filename filename);exit(1););exit(1);/*/*将数据写入文件和标准输出设备将数据写入文件和标准输出设备将数据写入文件和标准输出设备将数据写入文件和标准输出设备stdoutstdout*/*/for(for(countcount=0;=0;countco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计 基础 课程 教学
限制150内