电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2014c语言与程序设计第十一讲(文件)章

36页
  • 卖家[上传人]:E****
  • 文档编号:89082670
  • 上传时间:2019-05-17
  • 文档格式:PPT
  • 文档大小:3.27MB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、C语言程序设计基础,2014.9,第十讲 指针与函数,指针实践 检索链表非循环链表 检索链表循环链表 拷贝单链表 链表倒序,本节要点-指针与引用 指针的复杂性 递归倒序中的指针 结构嵌套中的变量表达形式 引用的概念 形参是指针 形参是引用 引用的定义 程序设计中的引用风格 引用简化复杂变量的表达形式 递归倒序中的引用,看教材自学,链表操作搜索指定节点,a1 next,a2 next,if(p-key!=key)q=p;p=p-next;,p=head;,struct node *head,*q,*p;,head,a3 next,an,否则,while(p)继续搜索,q指向an,p=NULL;,while(p) if(p-key!=key)q=p;p=p-next; else return(p); ,搜索成功返回位置指针,else return(p);,p非空,递推搜索,=(struct node *)searches(head,key);,到达节点an之后,继续更新p,则p=NULL;,p为空则搜索失败,p,int searches(struct stu *head,char *key

      2、) if(!head)return(-1); while(head) if(strcmp(head-num,key)!=0)head = head -next; else return(head-score); return(-1); ,int类型函数,指向头结点的指针,学号检索码,表空,返回检索失败信息,当前节点非空,循环搜索,如学号如果不符,修改头指针指向下一个节点,学号相符,返回该节点成绩分量,走出循环体则该表非空,且无检索的学号,链表操作搜索指定学号节点信息,struct stu char ID40; int score; struct stu *next; ;,循环链表操作搜索指定节点,a1 next,a2 next,if(p-key!=key)q=p;p=p-next;,p=head;,struct node *head,*q,*p;,head,a3 next,an,否则,while(p-next!=head )继续搜索,循环表的an-next为head,搜索成功返回位置指针,else return(p);,p非空,递推搜索,=(struct node *)searches

      3、(head);,到达节点an之后,继续更新p,则p=head;,若p=head,则搜索失败,p,非循环链,循环链,函数copy将单链表A复制到单链表B,a1 next,a2 next,p=head;,struct node *head,*head2,*q,*p;,head,a3 next,an ,s next,head2,空指针,q=head2;,申请节点s,q-next=s;,使用了空指针,while(p) s=(struct node *)malloc(sizeof(node); s-data=p-data; q-next=s; q=s; p=p-next; ,a1,s-data=p-data;,单链表复制(二),p=head;,struct node *head,*head2,*q,*p;,head,an ,h2 next,head2,q-next=s;,s next,a1,申请节点s,an,q=s;,q=head2;,a3 next,a2 next,申请节点h2,a1 next,q=head2-next,s-data=p-data;,若走出while(p)则复制过程结束,fre

      4、e(head2);,return(q);,返回头指针,head,q-next=NULL; q=head2-next; free(head2); return(q);,q=head;s=q;p=q-next; while(s) s=p-next; p-next=q; q=p; p=s; ,链表操作倒序,a1 next,a2 next,head,a3 next,an,next,head,next,an,next,a3,a2,a1,倒序,struct node *q,*p,*s;,a1 next,a2 next,head,a3 next,an,s=p-next;,p-next=q;,q=p;,p=s;,s=p-next;,若S非空,到达节点an之后,需要做什么?,struct node *fv(struct node *head) if(!head)|(!head-next)return(head); struct node *p,*q,*s; q=head;s=q;p=q-next; while(s) s=p-next; p-next=q; q=p; p=s; head-next=NULL

      5、; return(q); ,a1 next,a2 next,a3 next,q,s,p,an,s,q,到达节点an之后,需要做什么?,head,head = fv(head);,head,链表操作倒序,若是空链,能正常退出 只有一个节点,也能正常退出,第十一讲 文件、算法初步,计算语言与程序设计课程目标 只有一道题的期末考卷,本节要点 硬盘与文件 硬盘、文件与流的基本概念 文件概念、操作一览 文件的读写 格式化读写 数据块读写 定位函数frewind 和fseek,数据似水流,数据是程序运行时,在内存中动态产生的。 程序退出后,计算机的操作系统(OS)随即将该程序的内存空间收回,此内存空间内的数据全部消失(释放)。 如果想保留程序运行时产生的数据,就必须存储到硬盘,形成数据文件。,数据似水流,文件存盘,它保存了谁到硬盘?,数据似水流,文件存盘,它保存了谁到硬盘?,数据似水流,流的概念,C语言I/O系统在程序员和物理设备之间提供了一个转换接口,或者说是一层抽象的界面,我们称它为“流”。而具体的物理实现(包括物理设备、物理存储)称之为文件。 所有的流具有相同的行为(输入/输出数据),用来进

      6、行磁盘文件写入的函数也可以进行键盘、显示器等的读写操作,逻辑上相同,仅是物理层驱动不同。,C语言中有两种类型的流: 文本流(text stream)。一个文本流由一行字符组成,换行符表示一行结束。,二进制流(binary stream)。一个二进制流对应写入到设备的内容,由字节序列组成,没有字符翻译。,硬盘与文件,硬盘原理图,磁道,每个磁道内是固定长度、 连续分布的扇区,读写磁头,柱型结构的硬盘,文件在硬盘的存放形式,数据簇1,数据簇2,文件1存储区域,文件2存储区域,硬盘空间,项目2分配内存,有限的内存,函数,数据,项目2常驻数据区,目录索引区,文件1起始簇号,文件2起始簇号,建立数据文件,数据,文件就是数据流,文件是顺序存储在某块区域,内存单元用地址标记; 硬盘空间用扇区的簇号标记,没有地址的概念。 文件内部有一个偏移量i指示文件当前操作记录的下标位置。,i,0,当前操作纪录位置,1,当前操作纪录位置,2,第十一讲 文件、算法初步,计算语言与程序设计课程目标 只有一道题的期末考卷,本节要点 硬盘与文件 硬盘、文件与流的基本概念 文件概念、操作一览 文件的读写 格式化读写 数据块读写

      7、 定位函数frewind 和fseek,文件概念、操作一览,数据存盘:文件,文件名.扩展名,以ASCII码存文件:一组ASCII码构成文本文件,直接把二进制存文件:一组二进制码构成二进制文件,它们都是数据流,扩展名用于文件分类,文件指针FILE *fp,fp=fopen(“文件名“,“打开方式“),字符读写函数fgetc和fputc,字符串读写函数fgets和fputs,数据块读写函数fread和fwtrite,格式化读写函数fscanf和fprintf,关闭文件 fclose(fp),首先建立 文件指针,其次在打开文件的同时描述文件名以及属性,第三是选择对应的读写函数,最后,打开的文件必须关闭,语言用一指针指向一个文件,该指针称为文件指针,通过文件指针对它所指的文件进行各种操作。,文件内部的当前操作位置偏移,在文件内部有一个位置指针。用来指向文件的当前读写字节。每次读写文件之后,该位置指针将向后移动相应的字节。 在文件打开时,该指针总是指向文件的第一个字节。应注意文件指针和文件内部的位置指针不是一回事。 文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变

      8、的。 文件内部的位置指针可以理解为一个偏移量,用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。,fp,文件,纪录在磁盘上顺序排列,i,i,i,a,b,c,文件打开函数fopen(),fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(“文件名.扩展名”,”打开文件方式”); 其中: 文件指针名必须是被说明为FILE 类型的指针变量; 文件名是被打开文件的文件名,扩展名是文件类型说明,可以省略; 打开文件方式是指文件流的类型和读写操作以及新建还是追加在文件尾部要求。 例如: FILE *fp; fp=fopen(“file“,“r“); 在当前目录下打开文件file,“读”操作,并使fp指向该文件。 又如: FILE *fp; fp=fopen(“c:hzk16“,“wb+“); 打开C驱动器磁盘的根目录下的一个二进制文件hzk16,按二进制方式读写操作。两个反斜线“ ”中的第一个表示转义字符,第二个表示根目录。,读一个文件,意味着它已经存在,如何从键盘输入文件名(动态指定的目录下)?,C语言与程序设计

      9、基础2014C文件路径和删除文件名的使用范例,/程序功能:从键盘上输入一个字符串,存储到一个磁盘文件lwz.dat中 /使用格式:可执行文件名=要创建的磁盘文件名 void main(void) FILE *fp; char ch; if (fp=fopen(“lwz.dat“,“w“)=NULL) printf(“can not open this filen“); getch(); exit(-1); /以下程序是输入字符并存储到指定文件中,以输入符号“”作为文件结束 printf(“输入字符n“); for( ; (ch=getchar() != ; )fputc(ch,fp); fclose(fp); ,定义一个文件指针,如果打开文件失败返回的指针为空,退出循环,关闭fp指向的文件,输入字符并存储到lwz.dat文件中,打开文件操作失败,退出程序,#include;#include;#include;,建立一个文件,void input(char *); int main(void) FILE *fp; char FileName40; char ch; input(FileName); if (fp=fopen(FileName,“w“)=NULL) printf(“can not open this filen“);exit(-1); printf(“输入字符n“); for( ; (ch=getchar() != ; )fputc(ch,fp); fclose(fp); return(0); void input(char *p) printf(“输入要建立的文件名及路径:“); scanf(“%s“,p); ,从键盘输入文件名,定义一个文件指针,返回来自键盘的字符串。,按指定的文件名打开一个文件,写操作。,输

      《2014c语言与程序设计第十一讲(文件)章》由会员E****分享,可在线阅读,更多相关《2014c语言与程序设计第十一讲(文件)章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.