C语言程序设计文件操作.doc

第8章 文件操作1、 概述1. 概述文件是指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的。对I/O设备的管理也是看做一个文件,而且都有特殊的名字。如com,lpt,prn,con等。C语言把文件看作是一个字符的序列,即有一个一个字符的数据顺序组成。根据数据的组织形式,可分为ASCII码文件和二进制文件。ASCII码文件又称文本文件,它的每一个字节存放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存放形式原样输出到磁盘上存放。如一个整数12345,在内存中占2个字节。按ASCII码形式保存占5个字节,按二进制形式保存只需要2个字节。很显然采用ASCII码的形式便于输出字符,但需占用较多的存储空间;而采用二进制的形式可以节省存储空间,但不能直接输出字符。在C语言中对文件的存取是以字节(字符)为单位的。2. 文件指针每一个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息。这些信息是保存在一个结构体类型变量中的。该结构体类型的名称为FILE,其定义如下Typedef struct Int _fd;文件号Int _cleft;缓冲区中剩下的字符Int _mode;文件操作模式Char _*_nextc;下一个字符位置Char *_buff;文件缓冲区位置FILE;有了FILE 类型之后,我们就可以用它来定义文件类型的变量、数组和指针。如FILE fp256;定义了一个结构体数组fp,包含256个元素。FILE *fp;定义了一个指向FILE类型结构体的指针变量fp。有了这个定义之后,就可以用它指向一个文件,然后通过它来实现对文件的访问。3. 文件操作对文件的操作无非是文件的打开文件的关闭文件的读文件的写这四个操作。在C语言中使用专门的库函数来完成。1 文件的打开使用函数实现打开文件,而且在调用之前,需先定义一个FILE类型的指针。一般使用格式如下FILE *fp;Fp“文件名”,”打开方式”;通过这一条语句,就使得fp与“文件名”所指定的文件建立起了联系。说明1.文件名必须是文件的全名。2.打开方式如下表所示R只读为输入打开一个文本文件W只写为输出打开一个文本文件A追加向文本文件尾增加数据Rb只读为输入打开一个二进制文件Wb只写为输出打开一个二进制文件Ab追加向二进制文件尾增加数据R读写为读/写打开一个文本文件W读写为读/写建立一个新的文本文件A读写为读/写打开一个文本文件Rb读写为读/写打开一个二进制文件Wb读写为读/写建立一个新的二进制文件Ab读写为读/写打开一个二进制文件在上述列出的打开方式中,并非所有的C语言版本都完全提供。因此在使用时要注意所使用的版本的规定。3. 在使用时,如果打开不成功,将会返回一个错误信息,即空指针值(NULL),在stdio.h文件中被定义为0.造成错误的原因很多用“r”方式打开一个不存在的文件;磁盘出故障;磁盘写保护或已满无法建立新文件等。因此常用下面的方法进行检测。Iffp“lx.doc”,”r”NULLPrintf“can not open this filen”;Exit0;2、 文件的关闭在使用完一个文件之后,要养成关闭文件的习惯,否则将会造成数据丢失。因为在向文件写数据时,是先将数据输出到缓冲区,待缓冲区满后才正式输出到外存中的文件。如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。在C语言中使用fclose函数来关闭文件。其含义就是切断文件指针和文件之间的联系。Fclose函数也有返回值当成功地执行了关闭操作时,返回值为0,如果返回值为非0值,则表示关闭时有错误。3、 文件的读写当一个文件打开之后,就可以对它进行读写(又称之为访问)了。常用的函数如下1. fgetc()和fputc(或者putc()和getc(Fputc()把一个字符写到磁盘文件上去。一般使用形式为fputcch,fp;其中ch要输出的字符变量 Fp已定义的文件指针当fputc()返回EOF(即-1)时,表明输出失败;否则返回要输出的字符。Fgetc()从指定的文件中读入一个字符。一般使用形式为chfgetcfp;其中ch已定义的字符变量Fp已定义的文件指针当使用fgetc()顺序地读一个文件时,最终会碰到文件结束符。此时,该函数会返回一个文件结束标志EOF(即-1)。在实际应用中通常是使用feof()函数来进行测试是否到了文件末尾。如while(feoffp)Chfgetcfp;Putcharch;应用举例用C语言编程实现操作系统中的文件复制命令。Copy源文件名 目标文件名include stdio.hMainargc,argvChar ch;Ifargc3Printf“please enter file namen”;Exit0;Ifinargv1,”r”NULLprintf“source file is not existn”;Exit0;ifoutargv2,”w”NULL printf“ target file can not createn”; exit0; whilefeofin chfgetcin; fputcch,out; fclosein;fcloseout;2. fread函数和fwrite函数Fread()函数和fwrite()函数是用来实现读写一个数据块。它们的一般使用格式为Fread(buffer,size,count,fp);Fwrite(buffer,size,count,fp);其中Buffer是一个指针。对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址(以上指起始地址)。Size要读写的字节数。Count要进行读写多少个size字节的数据。(即多少次)Fp文件型指针。如果文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息。如fread(f,4,2,fp);其中f是一个实型数组名。一个实型变量占4个字节。Fread(f,4,2,fp);的意义就是从fp所指向的文件读入两次(每次4个字节)的数据,存储到数组f中。值得注意的是fread和fwrite函数一般用于二进制文件的输入和输出。因为它们是按数据块的长度来处理输入输出的,在字符发生转换的情况下很可能出现与原设想的情况不同。举例编程实现某班40个学生成绩数据库管理的程序。假设学生的信息包含如下字段姓名、学号,班级,C语言、组成原理、高数、线代。include stdio.h define SIZE 40 struct student char name10; int num; int class; flaot cyy; flaot zcyl; float gs; float xd; studSIZE;void read int i; printf“ name xuehao banji c zcyl gaoshu xiandain”; fori0;iSIZE;i scanf“sddffff”,studi.name,studi.num,studi.class, studi.cyy,studi.zcyl,studi.gs,studi.xd;void saveFILE *fp;int i;if fp“list.txt”,”wb”NULL printf“cannot create list filen”; exit0;for i0;iSIZE;i if fwritestudi,sizeofstruct student,1,fp1 printf“file write errorn”;void disp FILE *fp; int i;if fp“list.txt”,”rb”NULL printf“cannot open list filen”; return; for i0;iSIZE;i if freadstudi,sizeofstruct student,1,fp1 if feoffpreturn ; printf“file read errorn”; else printf“-10s5d5d5.1f5.1f5.1f5.1fn”,studi.name, studi.num,studi.class,studi.cyy,studi.zcyl,studi.gs,studi.xd; main read; save; disp; 3. fprintf()和fscanf()格式化读写文件的函数。其使用格式如下Fprintf(文件指针,格式字符串,输出项列表);Fscanf(文件指针,格式字符串,输入项列表);如fprintf(fp,“d,f”,i,x);将变量i和x的值分别按整型和单精度型写入fp所指向的文件。Fscanf(fp,“d,f”,i,x);读入一个整型数据和一个单精度型数据分别赋给变量i和x。值得注意的是使用这两个函数读写文件时要进行ASCII码和二进制形式之间的转换,从而导致花费的时间较多。4. putw和getw是用来对磁盘文件读写一个字或整数。如putw(10,fp);ngetw(fp);5. fgets()和()是用来对磁盘文件读写一个字符串。使用格式如下fgets(str,n,fp);从指向的文件读入n-1个字符,并把它放到字符数组str中,而且自动在最后加一个字符串结束标志0。在读入的过程中如果碰到换行符或EOF,读入结束。(字符串常量/字符数组名/字符指针,文件指针);“name sex age addr Tel ”,fp;输出成功,函数值为0,否则为非零值。4、 文件指针的定位1. rewind(文件指针);是文件的位置指针返回到文件的开头。Rewindfp;2. fseek(文件指针,位移量,起始点);其中“起始点”为下列三个常量的一个。SEEK_SET文件开头(0)SEEK_CUR当前位置(1)SEEK_END文件末尾(2)“位移量”是指相对于七点向前或向后移动的字节数。Fseek(fp,100L,SEEK_SET);Fseek(fp,10L,SEEK_CUR);Fseek(fp,-50L,SEEK_END);3. ftell()测试文件位置指针当前的位置。其返回值是相对于文件开头的偏移量来表示的。Iftell(fp);2、 文件指针3、 文件操作

c语言程序设计文件操作题库,C语言程序设计文件操作.doc相关推荐

  1. c语言到字符串的题库,C语言题库及答案(选择题).doc

    PAGE \* MERGEFORMAT- 42 - C语言题库(选择题) 1.C语言源程序的基本单位是(). A.过程 B.函数 C.子程序 D.标识符 2. 下列字符序列中,可用作C标识符的一组字符 ...

  2. c语言顺序选择结构题库,C语言复习题顺序结构

    C语言复习题顺序结构 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得收入( ...

  3. c语言到字符串的题库,C语言 - 考试题库测试

    1. 以下叙述中错误的是( ). A. 使用3种基本结构构成的程序只能解决简单问题B. 结构化程序由顺序.分支.循环3种基本结构组成C. C语言是一种结构化程序设计语言D. 结构化程序设计提倡模块化的 ...

  4. c语言编程入门题库,级程序设计基础题库(c语言)(..更新).doc

    级程序设计基础题库(c语言)(..更新).doc 14级<程序设计基?础>题库100?道 1.总共抽10?道题,按题型:顺序(1道).分支(1道).单循环(2道).多循环(1道).数组(1 ...

  5. C语言完美数单循环,《程序设计基础》题库(50道)

    <程序设计基础>题库(50道) 1.难易程度依次为:易(16道).较易(38道).较难(31道).难(15道). 2.总共抽8道题,按难易程度:易(1道).较易(4道).较难(2道).难( ...

  6. C语言答案解析,C语言题库带详细讲解答案解析.doc

    C语言题库带详细讲解答案解析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  7. 2022年R1快开门式压力容器操作题库及模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022R1快开门式压力容器操作复审题库是R1快开门式压力容器操作模拟考试题库高频考题覆盖!2022年R1快开门式压力容器操作题库及模拟考试依据R1快开门 ...

  8. 职称计算机word2003最新题库,职称计算机-Word2003操作题库

    职称计算机-Word2003操作题库 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 职称计算机-Word 2003 操作练习第一章 ...

  9. c语言用户标识符不能描述常量,福建省c语言考试试题c题库选择题答案06-08(最新)...

    1.12006 年年 6 月份月份2008 年年 1 月份月份C 语言等级考试语言等级考试模拟试卷模拟试卷集成集成(选择题部分选择题部分)一.选择题一.选择题1.关于.关于 C 语言数据类型的叙述,正 ...

最新文章

  1. Python基础知识(第十天)
  2. norminv函数是什么matlab,norminv函数的用法,表示的是什么意思
  3. PAT乙级 1003. 我要通过!
  4. 【POI1999codevs3634】积水,关于sunshine爷的NOIP(suan)水(ge)题(pi)赛
  5. 微信公众号自定义分享踩坑
  6. pm2同时启动多个前端项目
  7. Python 转义字符表
  8. 《Linux篇》超详细安装FinalShell并连接Linux教程
  9. MySQL8的URL和Driver的写法
  10. 划重点!算力网络是东数西算的『神经中枢』
  11. Kotlin协程核心库分析-5 Job异常处理器注意点
  12. 《JavaScript DOM编程艺术》笔记1
  13. 01时态(1):疑问句
  14. 短信ui--短信设置界面之sim卡短信管理
  15. USB TYPE C接口拆解及定义、USB3.1标准说明
  16. 无线传感器网络定位算法
  17. 最大流 最小费用最大流模板
  18. C++面试题整理(二)
  19. 几组数据的相关性python_几的解釋|几的意思|漢典“几”字的基本解釋
  20. ubuntu图形化软件包管理工具synaptic

热门文章

  1. 【520表白日】程序员如何表白吗?程序员表白教程送给你!
  2. 【鸿蒙 HarmonyOS】鸿蒙手机模拟器 ( 鸿蒙远程模拟器 | 鸿蒙远程模拟器运行手机应用 )
  3. 连接大智慧数据库接口
  4. CodeForces - 31D Chocolate【几何】【连通块】
  5. NSComboBox 使用方法
  6. 中文转url网址编码的两种方式
  7. layui table动态选中_mac动态图片编辑工具-Motion
  8. Python实现一个论文下载器
  9. 暑假阅读的正确打开方式原来这么简单!
  10. 小学生识字现状调查问卷