数据结构c(13)-1

上传人:豆浆 文档编号:4720032 上传时间:2017-08-06 格式:PPT 页数:32 大小:147KB
返回 下载 相关 举报
数据结构c(13)-1_第1页
第1页 / 共32页
数据结构c(13)-1_第2页
第2页 / 共32页
数据结构c(13)-1_第3页
第3页 / 共32页
数据结构c(13)-1_第4页
第4页 / 共32页
数据结构c(13)-1_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数据结构c(13)-1》由会员分享,可在线阅读,更多相关《数据结构c(13)-1(32页珍藏版)》请在金锄头文库上搜索。

1、复 习,位运算 位操作符 位运算的灵活使用,有以下程序: struct STU char num10;float score3;main() struct STU s3=20021,90,95,85,20022,95,80,75, 20023,100,95,90 ,*p=s; int i; float sum=0; for(i=0;iscorei; printf(%6.2fn,sum);程序运行后的输出结果是( )。A)260.00 B) 270.00 C) 280.00 D) 285.00,以下函数count的功能是统计链表中结点的个数,其中head为指向第一个结点的指针(链表不带头结点)。

2、请填空。struct linkchar data;struct link *next;count(struct link *head) struct link *p;int c=0;p= (【1】) ;while(p!=NULL) (【2】) ;p= (【3】) ;return c;,以下程序的运行结果是 。struct n int x; char c;main()struct n a=10,x;func(a);printf(%d,%c”,a.x,a.c);func(struct n b) b.x=20;b.c=y;,第十三章,文件,本章要点,文件的基本概念 文件的基本函数 文件的打开和关闭

3、文件的读写操作 文件简单应用,13.1 C文件概述,文件: 文件指存储在外部介质(如磁盘磁带)上数据的集合。 操作系统是以文件为单位对数据进行管理的。,文件与文件名 文件是指存放在外部存储介质上的数据集合。为标识一个文件,每个文件都必须有一个文件名,其一般结构为:主文件名.扩展名 文件命名规则,遵循操作系统的约定。文件分类可以从不同的角度对文件进行分类:(1)根据文件的内容(2)根据文件的组织形式(3)根据文件的存储形式:,文件的分类从用户观点:特殊文件(标准输入输出文件或标准设备文件)。普通文件(磁盘文件)。从操作系统的角度看,每一个与主机相连的输入输出设备看作是一个文件。例:输入文件:终端

4、键盘 输出文件:显示屏和打印机,按数据的组织形式:ASCII文件(文本文件):每一个字节放一个ASCII代码二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。例:整数10000在内存中的存储形式以及分别按ASCII码形式和二进制形式输出如下图所示:,ASCII文件和二进制文件的比较: ASCII文件:便于对字符进行逐个处理,也便于输出字符。 但是一般占存储空间较多,而且要花费转换时间。 二进制文件:可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用二进制文件保存。,C语言对文件的处

5、理方法:缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。用缓冲文件系统进行的输入输出又称为高级磁盘输入输出。非缓冲文件系统:系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。用非缓冲文件系统进行的输入输出又称为低级输入输出系统。,说明:在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件。ANSI C 标准只采用缓冲文件系统来处理文本文件和二进制文件。C语言中对文件的读写都是用库函数来实现。,Turbo 在stdio.h文件中有以下的文件类型声明:typedef struct shortlevel; *缓冲区“满”或“空”的程度*

6、unsignedflags; *文件状态标志* charfd; *文件描述符* unsignedcharhold; *如无缓冲区不读取字符* shortbsize; *缓冲区的大小* unsignedchar*buffer;/*数据缓冲区的位置*/ unsignedar*curp;/*指针,当前的指向*/ unsignedistemp;/*临时文件,指示器*/ shorttoken;/*用于有效性检查*/FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息。,13.2 文件类型指针,FILE类型的数组: FILEf5;定义了一个结构体数组f,它有

7、5个元素,可以用来存放5个文件的信息。文件类型指针变量: FILE *fp;fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。如果有个文件,一般应设个指针变量,使它们分别指向个文件,以实现对文件的访问。,13.3 文件的打开与关闭,一.文件的打开(fopen函数)函数调用:FILE *fp;fpfopen(文件名,使用文件方式);需要打开的文件名,也就是准备访问的文件的名字;使用文件的方式(“读”还是“写”等);让哪一个指针变量指向被打开的文件。,文件使用方式含 义 “r” (只读)为输入打开一个文本文件“w” (

8、只写)为输出打开一个文本文件“a” (追加)向文本文件尾增加数据“rb” (只读)为输入打开一个二进制文件“wb” (只写)为输出打开一个二进制文件“ab” (追加)向二进制文件尾增加数据“r+” (读写)为读/写打开一个文本文件“w+” (读写)为读/写建立一个新的文本文件“a+” (读写)为读/写打开一个文本文件“rb+” (读写)为读/写打开一个二进制文件“wb+” (读写)为读/写建立一个新的二进制文件“ab+” (读写)为读/写打开一个二进制文件,例如:FILE *fp; fpfopen(data.txt,r);,说明:(1) 如果不能实现打开指定文件的操作,则fopen()函数返回

9、一个空指针NULL(其值在头文件stdio.h中被定义为)。为增强程序的可靠性,常用下面的方法打开一个文件: if(fp=fopen(文件名,操作方式)=NULL) printf(can not open this filen); exit(0); ,关于exit()函数用法:void exit(程序状态值);功能:关闭已打开的所有文件,结束程序运行,返回操作系统,并将“程序状态值”返回给操作系统。当“程序状态值”为时,表示程序正常退出;非值时,表示程序出错退出。,(2)“r(b)+”与“a(b)+”的区别:使用前者打开文件时,读写位置指针指向文件头;使用后者时,读写指针指向文件尾。(3)使用

10、文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符;在输出时,将换行符转换成回车和换行两个字符。使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。(4)有些编译系统,可能并不完全提供上述对文件的操作方式,或采用的表示符号不同,请注意所使用系统的规定。(5)在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针:,标准输入文件stdin:指向终端输入(一般为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。标准输出文件stdout:指向终端输出(一般为显示器)。标准错误文件stderr:指向终端标准错误输出(

11、一般为显示器)。,二.文件的关闭(fclose函数)函数调用:fclose(文件指针);函数功能: 使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作。返回值: 关闭成功返回值为;否则返回EOF(-1) 。例如:fclose(fp);/*关闭fp所指向的文件*/,13.4 文件的读写,文件打开之后,就可以对它进行读与写的操作了。1 读写文件中的一个字符 2 读写一个字符串3 读写一个数据块4 对文件进行格式化读写5 读写函数的选用原则,读写文件中的一个字符,1将一个字符写到文件中fputc()函数库函数fputc():1)用法:

12、int fputc(字符数据,文件指针);其中“字符数据”,既可以是字符常量,也可以是字符变量。2)功能:将字符数据输出到“文件指针”所指向的文件中去,同时将读写位置指针向前移动1个字节(即指向下一个写入位置)。如果输出成功,则函数返回值就是输出的字符数据;否则,返回一个符号常量EOF(其值在头文件stdio.h中,被定义为-1)。,例:将键盘上输入的一 些字符(以“#”作为结束字符),以ASCII码形式存储到一个磁盘文件中。程序功能:从键盘上输入一个字符串,存储到一个磁盘文件中使用格式:可执行文件名 要创建的磁盘文件名#include “stdio.h”main( ) FILE *fp; c

13、har ch,filename10;scanf(%s,filename); if(fp=fopen(filename, w)=NULL) printf( can not open this filen ); exit(0); ,ch=getchar(); /*输入字符,并存储到指定文件中*/ while putchar(ch); fputc(ch,fp); /*输入字符并存储到文件中*/ch=getchar(); fclose(fp); /*关闭文件*/ 程序运行情况: (上机运行该文件) abcdefg1234567,(ch!= # ; ),2从文件中读入一个字符fgetc()函数和feof()函数(1)库函数fgetc() 1)用法:int fgetc(文件指针); 2)功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置指针向前移动1个字节(即指向下一个字符)。该函数无出错返回值。例如,fgetc(fp)表达式,从fp指向的文件中读一个字符,同时将fp的读写位置指针向前移动到下一个字符。(2)关于符号常量EOF 在对ASCII码文件执行读入操作时,如果遇到文件尾,则读操作函数返回一个文件结束标志EOF(其值在头文件stdio.h中被定义为-1)。在对二进制文件执行读入操作时,必须使用库函数feof()来判断是否遇到文件尾,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号