C语言程序设计10

上传人:zw****58 文档编号:52122918 上传时间:2018-08-18 格式:PPT 页数:43 大小:351KB
返回 下载 相关 举报
C语言程序设计10_第1页
第1页 / 共43页
C语言程序设计10_第2页
第2页 / 共43页
C语言程序设计10_第3页
第3页 / 共43页
C语言程序设计10_第4页
第4页 / 共43页
C语言程序设计10_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《C语言程序设计10》由会员分享,可在线阅读,更多相关《C语言程序设计10(43页珍藏版)》请在金锄头文库上搜索。

1、*1C语言程序设计-第十章10.1 C语言文件概述 10.2 缓冲文件输入输出系统 10.3 非缓冲文件输入输出系统第10章 文 件Date2C语言程序设计-第十章10.1 C语言文件概述q文件:存储在外部介质上数据的集合,是操作系统数 据管理的单位。q 文件分类: 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长)。 流式文件:由一个个字符(字节)数据顺序组成。 按存储介质: 普通文件:存储介质文件(磁盘、磁带等)。 设备文件:非存储介质(键盘、显示器、打印机等)。 按数据的组织形式: ASCII文件(文本文件):每个字节存放ASCII码,表示一个字符 。 二进制文件:数

2、据按其在内存中的存储形式原样存放。10.1.1 文件概述 Date3C语言程序设计-第十章例:整数100000010011100010000内存存储形式0010011100010000二进制形式0011000100110000001100000011000000110000ASCII形式文本文件特点: 存储量大,转换为二进制速度慢,直观易记。二进制文件特点: 存储量小,无需转换。 但因一个字节不对应一个字符,故不能直接输出其字符形式。Date4C语言程序设计-第十章q 文件系统 缓冲文件系统(高级文件系统):系统自动为正在使 用的文件开辟内存缓冲区。 非缓冲文件系统(低级文件系统):由用户在程

3、序中 为每个文件设定缓冲区。磁盘文件输出文件缓冲区输入文件缓冲区程序数据区 a缓冲文件系统缓冲区指令区程序用户数据区磁盘文件非缓冲文件系统10.1.2 缓冲文件系统和非缓冲文件系统 Date5C语言程序设计-第十章10.1.3 标准输入输出库函数 在C 语言编译系统中,由于计算机键盘输入和 显示器的输出是使用最多的I/O操作,因此,C编译 系统将键盘、显示器分别定义为标准的输入设备文 件和标准的输出设备文件。在没有专门指定输入输 出设备的情况下,所有的I/O操作均由键盘和显示 器完成。 1.标准通用输入输出函数 scanf(): 格式化输入函数。 printf(): 格式化输出函数。 2.标准

4、字符输入输出函数 getche()、getchar()、getch()、putchar() Date6C语言程序设计-第十章1、getche()函数。 (1)函数原型: int getche(void); (2)功能: getche()函数的原型在conio.h中,它的功能是 从键盘上读取一个字符并将该字符自动显示在屏幕上。 getche()函数有两个变体,一个是getchar()函数,它是 UNIX系统的字符输入函数的原形。另一个是getch()函数, 它的功能和getche()基本一致,只是它不把读入的字符回 显到屏幕上,可以利用这一特点来避免不必要的显示。 (3)返回值: 正常情况下其返

5、回值是读到字符的ASCII码值 ,遇到文件结束或出错时,返回EOF。也可以通过标准输入 设备换向功能从磁盘文件中读取字符的代码。 Date7C语言程序设计-第十章【 例10.1 】 把输入的小写字母变成大写字母输出,并统计字符个数。 #include “stdio.h“ main() int ch,count=0; while(ch=getchar()!=EOF) count+; if(ch=a /* 缓冲区满/空程度 */unsigned flags; /* 文件状态标志 */char fd; /* 文件描述符 */unsigned char hold; /* 若无缓冲区不读取字符 */sh

6、ort bsize; /* 缓冲区大小 */unsigned char *buffer; /* 数据传送缓冲区位置 */unsigned char *curp; /* 当前读写位置 */unsigned istemp; /* 临时文件指示 */short token; /* 用作无效检测 */ FILE ; /* 结构体类型名 FILE */Date16C语言程序设计-第十章q 文件指针定义形式 FILE *文件结构指针名;用法: 文件打开时,系统自动建立文件结构体,并把指向它的指针 返回来,程序通过这个指针获得文件信息,访问文件。 文件关闭后,它的文件结构体被释放。文件名文件使用 方式文件类

7、型指针C程序操作系统磁盘FILE *fp;Date17C语言程序设计-第十章q打开文件fopen函数首部: FILE *fopen(char *filename,char *mode)功能:按指定方式打开文件。 返值:正常打开,为指向文件结构体的指针;打开 失败,为NULL。10.2.2 文件的打开与关闭 要打开的文件名使用文件方式例:文件打开与测试。FILE *fp;if( fp=fopen(“filename”,“rb+”)=NULL) printf(“cannot open this filen”);exit(0);例 FILE *fp;fp= fopen (“c:test”,”rb+”

8、); “r+/rb+” (读写)“a/ab” (追加)“w/wb” (只写)“r/rb” (只读)“w+/wb+” (读写)“a+/ab+” (读写)为输入打开一个文本/二进制文件为输出打开或建立一个文本/二进制文件为读/写打开一个文本/二进制文件为读/写建立一个文本/二进制文件为读/写打开或建立一个文本/二进制文件向文本/二进制文件尾追加数据文件使用方式含义系统自动打开和关闭的五个标准设备文件:文件号文件指针针标标准文件0stdin标标准输输入(键盘键盘 ) 1stdout标标准输输出(显显示器) 2stderr标标准错误错误 (显显示器) 3stdaux标标准辅辅助(辅辅助设备设备 端口)

9、 4stdprn标标准打印(打印机)Date18C语言程序设计-第十章q 文件关闭fclose 函数首部:int fclose(FILE *fp) 功能:关闭fp指向的文件,释放文件结构体和文件指针 。 返值:正常为0;出错为非0。文件打开时返回的文件类型指针磁盘文件输出文件缓冲区输入文件缓冲区程序数据区 a缓冲文件系统:fclose不关闭文件可能会丢失数据Date19C语言程序设计-第十章10.2.3 文件的读写 q字符输出fputc 函数原型:int fputc(int ch, FILE *fp) 功能:把一字符ch写入fp指向的文件中。 返值:正常,返回ch;出错,为EOF。q字符输入f

10、getc 函数原型:int fgetc(FILE *fp) 功能:从fp指向的文件中读取一个字符。 返值:正常,返回读取的字符;读到文件尾或出错时 ,为EOF。文件I/O与终端I/O #define putc(ch,fp) fputc(ch,fp) #define getc(fp) fgetc(fp) #define putchar(ch) fputc(ch,stdout) #define getchar( ) fgetc(stdin)Date20C语言程序设计-第十章例10.5 从键盘输入一些字符,逐个把它们存到磁盘文件中 ,直到输入#“结束。#include “stdio.h“main()

11、char ch, filename20;FILE *fp;scanf(“%s“,filename);if(fp=fopen(filename,“w“)=NU LL)printf(“cannot open this filen“);exit(0);while(ch=getchar()!=#)fputc(ch,fp); putchar(ch);fclose(fp);file1.txt Computer and C# computer and CC:type file1.txt Computer and cDate21C语言程序设计-第十章例10.6 将一个磁盘文件中的信息复制到另一个磁盘文件中,两

12、个文件名由命 令行参数给出。#include “stdio.h“main (argc,argv)int argc;char *argv; int ch;FILE *fpr,*fpw;if (argc!=3) printf(“you forgot to enter a filenamen“);exit(0);if(fpr=fopen(argv1,“r“)=NULL) printf(“File %s cannot openn“,argv1);exit(0);if(fpw=fopen(argv2,“w“)=NULL) printf(“FILE %s cannot openn“,argv2);exit

13、(0);while(ch=fgetc(fpr)!=EOF)fputc(ch,fpw);fclose(fpr);fclose(fpw);C:s8_6 file1.c file2.cq文件结束feof 函数原型: int feof(FILE *fp)功能:判断文件是否结束。 返值:文件结束,返回真(非0);文件未结束,返回0 。while(!feof(fpr)fputc(fget(fpr),fpw);“rb”“wb”Date22C语言程序设计-第十章q字符串输入 fgets 函数首部: char *fgets(char *str,int length,FILE *fp); 功能:从fp所指向的文件

14、中,至多读length-1个字符, 送入字符数组str中, 如果在读入length-1个字符结束 前遇换行符或EOF,读入即结束,字符串读入后在最 后加一个0字符。 返值:正常,返str指针;出错,返空指针NULL。q字符串输出 fputs 函数首部: int fputs(char *str,FILE *fp); 功能:把str指向的字符串写入fp指向的文件。 返值:正常,返0;出错返EOF。Date23C语言程序设计-第十章#include “stdio.h“#define SIZE 256main(argc,argv)int argc;char *argv ;char chSIZE;int

15、 c,line;FILE *fp;if(argc!=2)printf(“you forgot to enter a filemanen“);exit(0);if(fp=fopen(argv1,“r“)=NULL)printf(“File %s cannot openn“,argv1);exit(0);line=1;while(fgets(ch,SIZE,fp)!=NULL)printf(“%4dt%sn“,line+,ch);fclose(fp);例10.7读取文本文件的内容,并加上行号显示。Date24C语言程序设计-第十章q字段输入fread /输出fwrite 函数首部: int fread(void *buffer,int num_bytes, int count,FILE *fp); int fwrite(void *buffer,int num_bytes, int count,FILE *fp); 功能:读/写数据块。 返值:成功,返回读/写的字段数;出错或文件结束, 返回0。 说明: buffer: 指向要输入/输出数据存储区的首地址的指针 num_bytes: 每个要读/写的字段的字节数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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