中国高校课件下载中心 》 教学资源 》 大学文库

南京师范大学:《C程序设计》课程教学课件(PPT讲稿)第十一章 文件

文档信息
资源类别:文库
文档格式:PPT
文档页数:20
文件大小:295.5KB
团购合买:点击进入团购
内容简介
11.1C文件概述 11.2文件类型指针 11.3文件的打开与关闭 11.4文件的读写 11.5文件的定位 11.6出错的检测
刷新页面文档预览

第十一章文件 11.1C文件概述 11.2文件类型指针 1.3文件的打开与关闭 11.4文件的读写 11.5文件的定位 1.6出错的检测

第十一章 文件 11.1 C文件概述 11.2 文件类型指针 11.3 文件的打开与关闭 11.4 文件的读写 11.5 文件的定位 11.6 出错的检测

111C文件概述 文件:存储在外部介质上数据的集合,是操作系统 数据管理的单位 文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定 长) 流式文件:由一个个字符(字节)数据顺序组成 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 按数据的组织形式 文本文件:ASCI文件,每个字节存放一个字符的 SCILlY 二进制文件:数据按其在内存中的存储形式原样存放

11.1 C文件概述 – 文件:存储在外部介质上数据的集合,是操作系统 数据管理的单位 文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定 长) 流式文件:由一个个字符(字节)数据顺序组成 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个字符的 ASCII码 二进制文件:数据按其在内存中的存储形式原样存放

文件特点 文本文件特点 存储量大、速度慢、便于对字符操作 如int型数10000 ASCⅡ形式 0011000100110000001100000011000000110000 00100110010000 001001110001000 内存存储形式 进制形式 二进制文件特点: 存储量小、速度快、便于存放中结果

如 int型数10000 0010011100010000 内存存储形式 0010011100010000 二进制形式 0011000100110000001100000011000000110000 ASCII形式 文本文件特点: 存储量大、速度慢、便于对字符操作 二进制文件特点: 存储量小、速度快、便于存放中间结果 文件特点:

文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓冲区 非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓冲区 输入文件缓冲区 缓冲文件系统: 指令区 磁盘文件 非缓冲文件系统:程数子 用戶数据区 冲输出k件缓冲区

• 缓冲文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓冲区 • 非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓冲区 磁盘文件 输出文件缓冲区 输入文件缓冲区 程序数据区 a 缓冲文件系统: 缓冲区 指令区 程序 用户数据区 磁盘 非缓冲文件系统: 文件处理方法

112文件类型指针 文件结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信 文件信息用系统定义的名为FILE的结构体描述 FILE定义在 stdio h中 typedef struct int fd;∥文件号 int cleft;/缓冲区中剩下的字符数 int mode;〃文件操作方式 char*next;∥x文件当前读写位置 char*bu;∥文件缓冲区位置 SFILE

– 文件结构体FILE • 缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 • 文件信息用系统定义的名为FILE的结构体描述 • FILE定义在stdio.h中 typedef struct { int _fd; //文件号 int _cleft; //缓冲区中剩下的字符数 int _mode; //文件操作方式 char *_next; //文件当前读写位置 char *_buff; //文件缓冲区位置 }FILE; 11.2 文件类型指针

文件类型指针 指针变量说明:FILE*fp 用法: 文件打开时,系统自动建立文件结构体,并把指向它的指针 返回来,程序通过这个指针获得文件信息访问文件 文件关闭后,它的文件结构体被释放 文件名 文件使用 C程序 方式 操作系统 文件类型指针 磁盘

• 指针变量说明: FILE *fp; • 用法: – 文件打开时,系统自动建立文件结构体,并把指向它的指针 返回来,程序通过这个指针获得文件信息,访问文件 – 文件关闭后,它的文件结构体被释放 文件名 文件使用 方式 文件类型指针 C程序 操作系统 磁盘 文件类型指针

113文件的打开与关闭 文件使用方式 含义 “rb”(只读) 为输入打开一个文本/二进制文件 “wwb”(只写) 为输出打开或建立一个文本/二进制文件 “a/ab”(追加) 向文本/二进制文件尾追加数据 “r+/rb+”(读写) 为读/写打开一个文本/二进制文件 “w+/wb+”(读写) 为读/写建立一个文本/二进制文件 “a+/ab+(读写)为读/写打开或建立一个文本/二进制文件 函数原型:FILE* fopen(char* 'name, char*mode) 功能:按指定方式打开文件 返值:正常打开,为指向刘要打开的文件名打 开失败,为NULL

C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件-->文件读/写-->关闭文件 系统自动打开和关闭三个标准文件: • 标准输入------键盘 stdin • 标准输出------显示器 stdout • 标准出错输出-----显示器 stderr – 打开文件fopen • 函数原型: FILE *fopen(char *name,char *mode) 功能:按指定方式打开文件 返值:正常打开,为指向文件结构体的指针;打 开失败,为NULL 要打开的文件名 使用文件方式 例 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); } 例 FILE *fp; fp= fopen (“c:\\fengyi\\bkc\\test.dat”,”r”); 例 FILE *fp; char *filename=“c:\\fengyi\\bkc\\test.dat” fp= fopen(filename,”r”); “r+/rb+” (读写) “a/ab” (追加) “w/wb” (只写) “r/rb” (只读) “w+/wb+” (读写) “a+/ab+” (读写) 为输入打开一个文本/二进制文件 为输出打开或建立一个文本/二进制文件 为读/写打开一个文本/二进制文件 为读/写建立一个文本/二进制文件 为读/写打开或建立一个文本/二进制文件 向文本/二进制文件尾追加数据 文件使用方式 含义 11.3 文件的打开与关闭

文件关闭 fclose 作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 函数原型: int fclose(FIE 功能:关闭印指向的文丝fp) 返值:正常关 文件打开时返回的文件类型指针 缓冲文件系统: 不关闭文件可能会丢失数据 输入文件缓冲区 磁盘文件 程序数据区 a 输出文件缓冲区 fclose

• 作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 • 函数原型:int fclose(FILE *fp) 功能:关闭fp指向的文件 返值:正常关闭为0;出错时,非0 文件打开时返回的文件类型指针 磁盘文件 输出文件缓冲区 输入文件缓冲区 程序数据区 a 缓冲文件系统: fclose 不关闭文件可能会丢失数据 文件关闭fclose

114文件的读写 字符 1O: puto与 fgetc fputc 函数原型; int fputc(intc,FILE*fp) 功能:把一字节代码c写入印指向的文件中 返值:正常,返回c;出错,为EOF getc 函数原型: int fgetc(FILE*fp) 功能:从印指向的文件中读取一字节代码 返值:正常,返回读到的代码值;读到文件尾或出错 为EOE 文件I/0与终端I/0 #define putc(ch, fp) fputc(ch, fp) #define getc(fp) fgetc(fp) #define putchar (c) fputc(c, stdout) #define getchar( fgetc(stdin)

– 字符I/O:fputc与fgetc • fputc – 函数原型:int fputc(int c, FILE *fp) – 功能:把一字节代码c写入fp指向的文件中 – 返值:正常,返回c;出错,为EOF fgetc 函数原型:int fgetc(FILE *fp) 功能:从fp指向的文件中读取一字节代码 返值:正常,返回读到的代码值;读到文件尾或出错 ,为EOF 文件I/O与终端I/O #define putc(ch,fp) fputc(ch,fp) #define getc(fp) fgetc(fp) #define putchar( c ) fputc(c,stdout) #define getchar( ) fgetc(stdin) 11.4 文件的读写

例从键盘输入字符,逐个# nclude NULL maint 例读文本文件内容{FLE* 并显示 char ch *filename=out. txt? NULL if(fp=fopen(filename, I==NI i printf("cannot open fileIn") exit(O) while((ch=fgetc(fp))!=EOF) putchar(ch fclose(fp) 判断文本文件是否结束

例 #include main() { FILE *fp; char ch,*filename=“out.txt”; if((fp=fopen(filename,"w"))==NULL) { printf("cannot open file\n"); exit(0); } printf("Please input string:"); ch=getchar(); while(ch!='#') { fputc(ch,fp); putchar(ch); ch=getchar(); } fclose(fp); } 例 读文本文件内容, 并显示 #include main() { FILE *fp; char ch,*filename=“out.txt”; if((fp=fopen(filename,”r"))==NULL) { printf("cannot open file\n"); exit(0); } while((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 从键盘输入字符,逐个 存到磁盘文件中,直到 输入‘#“为止 判断文本文件是否结束

共20页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档