- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区 非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区 13.2 文件类型指针 文件结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中 文件类型指针 指针变量说明: FILE *fp; fp是一个指向FILE类型结构体的指针变量; 从而fp通过该结构体变量中的文件信息能够访问该文件; 用法: 文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件 文件关闭后,它的文件结构体被释放 13.3 文件的打开与关闭 C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件--文件读/写--关闭文件 系统自动打开和关闭三个标准文件: 标准输入------键盘 stdin 标准输出------显示器 stdout 标准出错输出-----显示器 stderr 打开文件fopen 函数调用: FILE *fp fp=fopen(char *name,char *mode) 文件关闭fclose 作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针 函数调用: fclose(fp) 13.4 文件的读写函数 字符I/O函数: fputc与fgetc fputc 函数调用: fputc(ch, fp) 功能:把一字节代码ch写入fp指向的文件中 返值:正常,返回ch;出错,为EOF 数据块I/O:fread与fwrite 函数调用: 格式化I/O:fprintf与fscanf 函数调用: 13.5 文件的定位 几个概念 文件位置指针-----指向当前读写位置的指针 读写方式 顺序读写:位置指针按字节位置顺序移动,叫~ 随机读写:位置指针按需要移动到任意位置,叫~ rewind函数 函数调用: rewind(fp) 功能:重置文件位置指针到文件开头 返值:无 fseek函数 函数调用: fseek(fp, offset, whence) 功能:改变文件位置指针的位置 返值:成功,返回0;失败,返回非0值 13.6 出错的检测 ferror函数 函数调用: ferror(fp) 功能:测试文件是否出现错误 返值:未出错,0;出错,非0 说明 每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试 fopen打开文件时,ferror函数初值自动置为0 clearerr函数 函数调用: clearerr(fp) 功能:使文件错误标志置为0 返值:无 说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数 例:在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,该程序功能:输入n和平面上n个点的坐标,计算各点间距离的总和。 #include stdio.h #include math.h #define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2) //带参数的宏 1 // #include stdlib.h或#include malloc.h void main( ) { float *x,*y,s=0; int i,j,n; scanf(“%d”,n); x=(float)malloc(sizeof(float)n*2); y=x+ n ; for(i=0;in;i++) scanf(“%df%f”,x+i,y+i); for(i=0;in-1;i++) for(j=0;jn;j++) s+=f(x[i],y[i],x[j],y[j]);//指针的下标表示法为实参 printf(“%.2f\n”,s); } Void *malloc(unsigned size)在动态存储区分配一个长度为size的连续空间,其函数值是该区间的起始地址。若此函数未能成功的执行,则函数值为0。这里x、y是一点的纵横坐标的地址,所有的横坐标的地址排在所有纵坐标之前。 第十三章 文件 在前面的程序中,是把数据保存到内存变量里,数据的处理完全由程序控制。当程序运行结束后,所有变量被释放。 另外,一般程序都会有数据的输入/输出,如果输入
文档评论(0)