资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础乔乔 林林 计算机程序设计基础计算机程序设计基础Email: Email: qiaolincic.tsinghua.edu.cnqiaolincic.tsinghua.edu.cn Tel: 62780973Tel: 62780973清华大学计算机科学与技术系清华大学计算机科学与技术系2清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础第十章 文件与数据存储 学习目标 掌握文件的基本概念 学会使用常用的文件操作函数进行文件读写 会使用文件存储、访问和管理数据3清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础10.1 文件的基本概念 数据的保存与持久化 在程序结束时数据仍有效 文件的定义 一组相关信息的集合 存储于某种存储介质上 具有某种特定格式,其中的信息也具有相同的含 义,需要用不同的方法存取 文件结构体与文件指针4清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件的类型 顺序文件与随机文件 顺序文件:只能顺序访问其中的信息 例:存储在磁带上的文件只能顺序访问 随机文件:可以随机访问文件的任一部分信息, 可以指定读写位置 二进制文件与文本文件 文本文件:信息以字符形式存储,有分行信息, 阅读目标为程序员与程序 二进制文件:文件以二进制码存储,无分行信息 ,阅读目标为程序5清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础10.2 基本文件操作 文件打开与关闭操作 FILE* fopen( const char* filename, const char* mode ); int fclose( FILE* fp ); 文件状态与缓冲区操作 int feof( FILE* fp ); int fflush( FILE* fp ); 文件指针操作 void rewind( FILE* fp ); int fseek( FILE* fp, long offset, int fromwhere ); long ftell( FILE* fp );6清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础10.2 基本文件操作 文件读写操作 int fprintf( FILE* fp, const char* fmt, ); int fscanf( FILE* fp, const char* fmt, ); int fgetc( FILE* fp ); char* fgets( char* str, int n, FILE* fp ); int fputc( int ch, FILE* fp ); char fputs( char* str, FILE* fp ); int fread( void* buf, int size, int count, FILE* fp ); int fwrite( void* buf, int size, int count, FILE* fp );7清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件打开操作 函数原型 FILE* fopen( const char* filename, const char* mode ); 返回值 调用成功返回文件指针,失败返回NULL 函数参数 filename:文件名字符串,可以包含路径名 mode:文件打开模式8清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件打开模式 mode:文件打开模式 r:读,若文件不存在,返回NULL w:写,若文件不存在,创建,若已存在,删除 a:追加,若文件不存在,创建,若已存在,添加到文件 尾部 r+、w+:读写,若文件不存在,创建,若已存在,覆盖 a+:读与追加,若文件不存在创建,若已存在,覆盖 b:二进制格式 示 例 “rb”:读模式打开二进制文件 “w+”:读写模式打开文本文件9清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件打开示例 文件打开应用#include #include intint mainmain()()FILE * FILE *fpfp; ;char char filenamefilename40, 40, modemode4;4;while( 1 ) while( 1 )/* /* 输入文件名和打开方式输入文件名和打开方式 */ */printfprintf( “( “n nEnterEnter a filename: “ ); a filename: “ );getsgets( ( filenamefilename ); ); /* /* 输入文件名输入文件名 */ */printfprintf( “( “n nEnterEnter a mode (max 3 characters): “ ); a mode (max 3 characters): “ );getsgets( ( mode mode ); ); /* /* 输入打开方式输入打开方式 */ */ 10清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件打开示例/* /* 打开文件打开文件 */ */if( (if( (fpfp = = fopenfopen( (filenamefilename, , modemode) != ) != NULLNULL ) )printfprintf( “( “n nSuccessfulSuccessful opening % opening %s s in mode % in mode %s s. .n n“, “,filenamefilename, , mode mode ); ); /* /* 输出成功信息输出成功信息 */ */fclosefclose( ( fpfp ); ); /* /* 关闭文件关闭文件 */ */ elseelse fprintffprintf( ( stderrstderr, “, “n nErrorError opening file % opening file %s s in mode % in mode %s s. .n n“, “,filenamefilename, , mode mode ); ); /* /* 输出不成功信息输出不成功信息 */ */ /* /* 询问是否结束询问是否结束 */ */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:/learn.tsinghua.edu.cn计算机程序设计基础预定义的标准文件 标准文件:输入输出流 stdin:标准输入设备,一般为键盘 stdout:标准输出设备,一般为屏幕 stderr:标准错误输出设备,一般为屏幕12清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件关闭操作 函数原型 关闭单个文件:int fclose( FILE* fp ); 关闭除标准文件之外的所有文件:int fcloseall(); 文件缓冲区 外部块设备与内部数据流间的接口(中转站) 清理文件缓冲区:int fflush( FILE* fp ); 清理所有文件的缓冲区:int fflushall();13清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件关闭示例 将磁盘文件中的信息复制到新文件中#include .h void void mainmain() () FILE * FILE *inin, *, *outout; char; char innameinname12,12, outnameoutname12;12;scanfscanf( “%s”, ( “%s”, innameinname ); ); scanfscanf( “%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清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件格式化输入输出操作 函数原型 格式化输出:int fprintf( FILE* fp, const char* fmt, ); 格式化输入:int fscanf( FILE* fp, const char* fmt, ); 说 明 与标准格式化输入输出函数功能基本相同 差别:多了文件指针参数,输入源或输出目的均 是文件,而不是标准设备 思考:fprintf(stdout, ); = printf(); ?15清华大学计算机科学与技术系http:/learn.tsinghua.edu.cn计算机程序设计基础文件格式化输出示例 将用户输入的 5 个浮点数写入文件#include .h #include .h void void clear_kbclear_kb();();intint mainmain()()FILE * FILE *fpfp; ;float float datadata5;5;intint countcount; ;char char filenamefilename20;20;putsputs( “Enter 5 floating-point numerical values.“ );( “Enter 5 floating-point numerical values.“ );for( for(countcount=0; =0; countcount.h #include .h
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号