C语言程序设计(第二版) 教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11

上传人:E**** 文档编号:89423196 上传时间:2019-05-25 格式:PPT 页数:43 大小:353KB
返回 下载 相关 举报
C语言程序设计(第二版)  教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11_第1页
第1页 / 共43页
C语言程序设计(第二版)  教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11_第2页
第2页 / 共43页
C语言程序设计(第二版)  教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11_第3页
第3页 / 共43页
C语言程序设计(第二版)  教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11_第4页
第4页 / 共43页
C语言程序设计(第二版)  教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《C语言程序设计(第二版) 教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版) 教学课件 ppt 作者 王宏志,韩志明主编 C语言程序设计11(43页珍藏版)》请在金锄头文库上搜索。

1、第十一章 文 件,C语言程序设计,2019/5/25,C语言程序设计-第十章,2,11.1 C语言文件概述 11.2 缓冲文件输入输出系统 11.3 非缓冲文件输入输出系统,第11章 文 件,2019/5/25,C语言程序设计-第十章,3,11.1 C语言文件概述,文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。,文件分类: 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长)。 流式文件:由一个个字符(字节)数据顺序组成。 按存储介质: 普通文件:存储介质文件(磁盘、磁带等)。 设备文件:非存储介质(键盘、显示器、打印机等)。 按数据的组织形式: ASCII文件

2、(文本文件):每个字节存放ASCII码,表示一个字符。 二进制文件:数据按其在内存中的存储形式原样存放。,11.1.1 文件概述,2019/5/25,C语言程序设计-第十章,4,文本文件特点: 存储量大,转换为二进制速度慢,直观易记。,二进制文件特点: 存储量小,无需转换。 但因一个字节不对应一个字符,故不能直接输出其字符形式。,2019/5/25,C语言程序设计-第十章,5,文件系统 缓冲文件系统(高级文件系统):系统自动为正在使用的文件开辟内存缓冲区。 非缓冲文件系统(低级文件系统):由用户在程序中为每个文件设定缓冲区。,11.1.2 缓冲文件系统和非缓冲文件系统,2019/5/25,C语

3、言程序设计-第十章,6,11.1.3 标准输入输出库函数,在C 语言编译系统中,由于计算机键盘输入和显示器的输出是使用最多的I/O操作,因此,C编译系统将键盘、显示器分别定义为标准的输入设备文件和标准的输出设备文件。在没有专门指定输入输出设备的情况下,所有的I/O操作均由键盘和显示器完成。,1.标准通用输入输出函数 scanf(): 格式化输入函数。 printf(): 格式化输出函数。,2.标准字符输入输出函数 getche()、getchar()、getch()、putchar(),2019/5/25,C语言程序设计-第十章,7,1、getche()函数。 (1)函数原型: int get

4、che(void); (2)功能: getche()函数的原型在conio.h中,它的功能是从键盘上读取一个字符并将该字符自动显示在屏幕上。getche()函数有两个变体,一个是getchar()函数,它是UNIX系统的字符输入函数的原形。另一个是getch()函数,它的功能和getche()基本一致,只是它不把读入的字符回显到屏幕上,可以利用这一特点来避免不必要的显示。 (3)返回值: 正常情况下其返回值是读到字符的ASCII码值,遇到文件结束或出错时,返回EOF。也可以通过标准输入设备换向功能从磁盘文件中读取字符的代码。,2019/5/25,C语言程序设计-第十章,8,【 例11.1 】

5、把输入的小写字母变成大写字母输出,并统计字符个数。 #include “stdio.h“ main() int ch,count=0; while(ch=getchar()!=EOF) count+; if(ch=a ,运行输入: The student is a boy! 运行结果: THE STUDENT IS A BOY! The characters total to : 21,2019/5/25,C语言程序设计-第十章,9,2、字符串输入输出函数gets()、puts() (1)gets()函数 函数原型: char *gets(char *str); 功能: 接收来自标准输入的一个

6、字符串,并把它放入str所指向的字符数组中。 返回值: 正常返回指向该字符串的指针,否则返回空指针NULL。 gets()函数读取字符串的个数没有限制,编程时注意保证str所指向的字符数组应该有足够大的空间。它读到换行符或读入EOF时结束,EOF或换行符不放入字符串中而是将它们转换为空字符0,作为字符串的结束符,即自动转换成C语言的字符串。由于发生错误和读到文件结束标志这两种情况下返回值均为空指针,所以应该使用feof()函数和ferror()函数来区别两种不同的情况。,2019/5/25,C语言程序设计-第十章,10,【 例11.2 】 读入一个字符串到字符数组中,并输出它的长度。 #inc

7、lude “stdio.h“ main() char str80; gets(str); printf(“%dn“,strlen(str); 运行输入: how are you 运行结果: 11,2019/5/25,C语言程序设计-第十章,11,(2)puts()函数 函数原型: int puts(char *str); 功能: 将字符指针str所指的字符串输出到标准输出文件上,字符串结束符被转换成换行符。 返回值: 调用成功返回零,否则返回EOF。,【例11.3】 将输入的字符串输出。 #include “stdio.h“ main() char str80; while (gets(str

8、)!=NULL) puts(str); ,2019/5/25,C语言程序设计-第十章,12,11.1.4 标准设备文件及I/O改向,当输入一个字符或输出一个字符时,系统规定的设备分别为键盘和显示器,即所谓的标准输入、输出设备的名称。其实,一个程序运行时,系统首先自动打开五个标准文件,并为其分配了文件号。当程序运行结束时,系统又自动关闭这些标准设备,用户不能控制它们的打开与关闭。表11.1中列举了五个标准设备文件名及对应的文件号。,2019/5/25,C语言程序设计-第十章,13,【例11.4】 从键盘上输入和向显示器上输出一个字符。 /* 文件名 EXP8_4.c */ #include “s

9、tdio.h“ main() int c; while(c=getchar()!=EOF) putchar(c); ,2019/5/25,C语言程序设计-第十章,14,1.输出改向 例如,程序EXP8_4编译连接之后的可执行文件名为EXP8_4.EXE,则键入如下命令行: EXP8_4PRN 将把标准输出文件从显示器改到打印机。执行程序时,从键盘输入的字符将不再输出到显示器,而是输出到打印机上打出。 2.输入改向 假设磁盘上存在一个名为data.txt的文本文件,则键入如下命令行: EXP8_4 result.txt 该命令行把标准输入改向到文件data.txt,把标准输出改向到文件resul

10、t.txt 。程序执行后,把文件data.txt的内容复制到文件result.txt中。,2019/5/25,C语言程序设计-第十章,15,11.2.1 文件类型结构及文件指针 11.2.2 文件的打开与关闭 11.2.3 文件的读写 11.2.4 文件的定位 11.2.5 出错的检测,11.2 缓冲型文件输入输出系统,缓冲型文件输入输出系统(高级磁盘输入输出系统/高级I/O) :用缓冲文件系统进行的输入输出。,2019/5/25,C语言程序设计-第十章,16,11.2.1 文件类型结构及文件指针 文件类型结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区。 文件信息用系统定义

11、的名为FILE的结构体描述。 FILE定义在stdio.h中。,typedef struct /* Turbo C 文件类型声明 */ short level; /* 缓冲区满/空程度 */ unsigned flags; /* 文件状态标志 */ char fd; /* 文件描述符 */ unsigned char hold; /* 若无缓冲区不读取字符 */ short bsize; /* 缓冲区大小 */ unsigned char *buffer; /* 数据传送缓冲区位置 */ unsigned char *curp; /* 当前读写位置 */ unsigned istemp; /*

12、 临时文件指示 */ short token; /* 用作无效检测 */ FILE ; /* 结构体类型名 FILE */,2019/5/25,C语言程序设计-第十章,17,文件指针定义形式 FILE *文件结构指针名; 用法: 文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件。 文件关闭后,它的文件结构体被释放。,FILE *fp;,2019/5/25,C语言程序设计-第十章,18,打开文件fopen 函数首部: FILE *fopen(char *filename,char *mode) 功能:按指定方式打开文件。 返值:正常打开,为指向文

13、件结构体的指针;打开失败,为NULL。,11.2.2 文件的打开与关闭,要打开的文件名,使用文件方式,例:文件打开与测试。 FILE *fp; if( fp=fopen(“filename”,“rb+”)=NULL) printf(“cannot open this filen”); exit(0); ,例 FILE *fp; fp= fopen (“c:test”,”rb+”);,系统自动打开和关闭的五个标准设备文件:,2019/5/25,C语言程序设计-第十章,19,文件关闭fclose 函数首部:int fclose(FILE *fp) 功能:关闭fp指向的文件,释放文件结构体和文件指针

14、。 返值:正常为0;出错为非0。,文件打开时返回的文件类型指针,不关闭文件可能会丢失数据,2019/5/25,C语言程序设计-第十章,20,11.2.3 文件的读写 字符输出fputc 函数原型:int fputc(int ch, FILE *fp) 功能:把一字符ch写入fp指向的文件中。 返值:正常,返回ch;出错,为EOF。,字符输入fgetc 函数原型:int fgetc(FILE *fp) 功能:从fp指向的文件中读取一个字符。 返值:正常,返回读取的字符;读到文件尾或出错时,为EOF。,文件I/O与终端I/O #define putc(ch,fp) fputc(ch,fp) #de

15、fine getc(fp) fgetc(fp) #define putchar(ch) fputc(ch,stdout) #define getchar( ) fgetc(stdin),2019/5/25,C语言程序设计-第十章,21,例11.5 从键盘输入一些字符,逐个把它们存到磁盘文件中,直到输入#“结束。,#include “stdio.h“ main() char ch, filename20; FILE *fp; scanf(“%s“,filename); if(fp=fopen(filename,“w“)=NULL) printf(“cannot open this filen“); exit(0); while(ch=getchar()!=#) fputc(ch,fp); putchar(ch); fclose(fp); ,file1.txt Computer and C#,2019/5/25,C语言程序设计-第十章,22,例11.6 将一个磁盘文件中的信息复制到另一个磁盘文件中,两个文件名由命令行参数给出。,#include “stdio.h“ main (argc,argv) int argc; char *argv; int ch; FILE *fpr,*fpw; if (argc!=3)

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

当前位置:首页 > 高等教育 > 大学课件

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