分享
分销 收藏 举报 申诉 / 6
播放页_导航下方通栏广告

类型第13章-文件.docx

  • 上传人:二***
  • 文档编号:4772384
  • 上传时间:2024-10-12
  • 格式:DOCX
  • 页数:6
  • 大小:18.60KB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    13 文件
    资源描述:
    第十三章 文件 从操作系统的角度看,每一个与主机相连的输入输出设备看作是一个文件。 文件的分类 按数据的组织形式: ASCII文件(文本文件):每一个字节放一个ASCII代码二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放. ASCII文件和二进制文件的比较: ASCII文件便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间。 二进制文件可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用二进制文件保存。 C语言对文件的处理方法: 缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。用缓冲文件系统进行的输入输出又称为高级磁盘输入输出。 非缓冲文件系统:系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。用非缓冲文件系统进行的输入输出又称为低级输入输出系统。 说明: 在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件. ANSI C 标准只采用缓冲文件系统来处理文本文件和二进制文件. C语言中对文件的读写都是用库函数来实现. Turbo C在stdio.h文件中有以下的文件类型声明: typedef struct { shortlevel; /*缓冲区“满”或“空”的程度*/ unsignedflags; /*文件状态标志*/ charfd; /*文件描述符*/ unsignedcharhold; /*如无缓冲区不读取字符*/ shortbsize; /*缓冲区的大小*/ unsignedchar*buffer; /*数据缓冲区的位置*/ unsignedar*curp; /*指针,当前的指向*/ unsignedistemp; /*临时文件,指示器*/ shorttoken; /*用于有效性检查*/ }FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息. FILE类型的数组: FILE f[5];定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。文件型指针变量: FILE *fp;fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,以实现对文件的访问。 文件的打开(fopen函数) 函数调用: FILE *fp; fp=fopen(文件名,使用文件方式); ①需要打开的文件名,也就是准备访问的文件的名字; ②使用文件的方式(“读”还是“写”等); ③让哪一个指针变量指向被打开的文件。 文件的关闭(fclose函数) 函数调用: fclose(文件指针); 函数功能: 使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作 返回值: 关闭成功返回值为0;否则返回EOF(-1) 文件使用方式      含   义 “r” (只读)为输入打开一个文本文件 “w” (只写)为输出打开一个文本文件 “a” (追加)向文本文件尾增加数据 “rb” (只读)为输入打开一个二进制文件 “wb” (只写)为输出打开一个二进制文件 "ab“ (追加)向二进制文件尾增加数据 "r+“ (读写)为读/写打开一个文本文件 "w+” (读写)为读/写建立一个新的文本文件 "a+” (读写)为读/写打开一个文本文件 "rb+“ (读写)为读/写打开一个二进制文件 “wb+“ (读写)为读/写建立一个新的二进制文件 “ab+” (读写)为读/写打开一个二进制文件 字符输入输出函数(fputs()和fgets()) fputs函数 函数调用:fputs ( ch,fp ) ; 函数功能:将字符(ch的值)输出到fp所指向的文件中去。 返回值: 如果输出成功,则返回值就是输出的字符; 如果输出失败,则返回一个EOF. fgets函数 函数调用:ch=fgets(fp); 函数功能: 从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。 返回值: 读取成功一个字符,赋给ch。 如果遇到文件结束符,返回一个文件结束标志EOF 。 常见的读取字符操作 从一个文本文件顺序读入字符并在屏幕上显示出来: ch = fgetc(fp); while(ch!=EOF)   {   putchar(ch); ch = fgetc(fp);   } 注意: EOF不是可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现-1,因此EOF定义为-1是合适的。当读入的字符值等于-1时,表示读入的已不是正常的字符而是文件结束符。 从一个二进制文件顺序读入字符: while(!feof(fp))   { ch = fgetc(fp);   } 注意:ANSI C提供一个feof()函数来判断文件是否真的结束。如果是文件结束,函数feof(fp)的值为1(真);否则为0(假)。以上也适用于文本文件的读取。 数据块读写函数(fread( )和fwrite( )) 函数调用: fread (buffer,size,count,fp); fwrite(buffer,size,count,fp); 参数说明: buffer:是一个指针。 对fread 来说,它是读入数据的存放地址。 对fwrite来说,是要输出数据的地址(均指起始地址)。 size: 要读写的字节数。 count: 要进行读写多少个size字节的数据项。 fp: 文件型指针。 格式化读写函数(fprintf( )和fscanf( )) 函数调用: fprintf ( 文件指针,格式字符串,输出表列); fscanf ( 文件指针,格式字符串,输入表列); 函数功能: 从磁盘文件中读入或输出字符。 注意: 用fprintf和fscanf函数对磁盘文件读写,使用方便,容易理解,但由于在输入时要将ASCII码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比较多。因此,在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数。 putw( )和getw( ) 函数调用: putw(int i,FILE * fp); int i = getw (FILE * fp); 函数功能: 对磁盘文件中读写一个字(整数)。 fgets函数 函数作用:从指定文件读入一个字符串。 函数调用:fgets(str, n, fp); 从fp指向的文件输入n-1个字符,在最后加一个’\0’ 返回值:str的首地址 fputs函数 函数作用:向指定的文件输出一个字符串。 函数调用:fgets(“china”, fp ); 第一个参数可以是字符串常量、字符数组名或字符型指针。字符串末尾的′\0′不输出。 返回值: 输入成功,返回值为0; 输入失败,返回EOF. fseek函数(一般用于二进制文件) 函数功能:改变文件的位置指针 函数调用形式:fseek(文件类型指针,位移量,起始点) 起始点:文件开头 SEEK_SET 0 文件当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2 位移量:以起始点为基点,向前移动的字节数。一般要求为long型 ftell函数 函数作用:得到流式文件中的当前位置,用相对于文件开头的位移量来表示。 返回值:返回当前位置,出错时返回-1L。 ferror函数 调用形式:ferror(fp); 返回值:返回0,表示未出错;返回非0,表示出错。 在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。 clearerr函数 调用形式:clearerr(fp); 函数作用:使文件错误标志和文件结束标志置为0。只要出现错误标志,就一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入输出函数。 分类 函数名 功能 打开文件 fopen() 打开文件 关闭文件 fclose() 关闭文件 fseek() 改变文件位置指针的位置 文件定位 Rewind() 使文件位置指针重新至于文件开头 Ftell() 返回文件位置指针的当前值 feof() 若到文件末尾,函数值为真 文件状态 Ferror() 若对文件操作出错,函数值为真 Clearerr() 使ferror和feof()函数值置零 fgetc(),getc() 从指定文件取得一个字符 fputc(),putc() 把字符输出到指定文件 fgets() 从指定文件读取字符串 fputs() 把字符串输出到指定文件 文件读写 getw() 从指定文件读取一个字(int型) putw() 把一个字输出到指定文件 fread() 从指定文件中读取数据项 fwrite() 把数据项写到指定文件中 fscanf() 从指定文件按格式输入数据 fprintf() 按指定格式将数据写到指定文件中 C语言将文件看作是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的。将这种文件称为流式文件。 C语言用一个指针变量指向一个文件, 这个指针称为文件指针。 文件指针定义形式: FILE * 指针变量名; u 用fopen( )函数打开一个文件 u 用fclose( )函数关闭一个文件 用法: FILE *fp; fp=fopen(文件名,使用文件方式) ; 如: fp=fopen("data.out","r"); fp= fopen(“h:\\exam\\',"rb") fp= fopen(“a:\\”, " w") 使用方式 意 义 “r” 打开一个已经存在的文本文件,只允许读数据 “w” 打开或新建一个文本文件,只允许写数据 “a” 打开一个文本文件,并在文件末尾追加数据 “r+” 读写打开一个文本文件,允许读和写 “w+” 读写打开或建立一个文本文件,允许读写 “a+” 读写打开一个文本文件,允许读,或在文件末尾追加数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “rb+” 读写打开一个二进制文件,允许读和写 “wb+” 读写打开或建立一个二进制文件,允许读和写 “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:第13章-文件.docx
    链接地址:https://www.zixin.com.cn/doc/4772384.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork