《C语言程序设计与数据结构》课件第10章文件读写

合集下载

C语言程序设计第四版PPT-谭浩强

C语言程序设计第四版PPT-谭浩强

文件f2的 文件信息区
文件f3的 文件信息区
文件的基本知识——文件的操作 写文件:打开-写-关闭 读文件:打开-读-关闭
文件的打开
功能:为文件建立相应的信息区(存放 文件信息)和文件缓冲区(暂时存放输入 输出的数据) 函数: fopen(文件名,使用文件方式); 例: fopen("a1.dat","r");
第10章 文件
本章内容
10.1 文件的基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件 10.5 文件读写的出错检测
文件的基本知识——输入输出
之前各章中处理的数据 ➢输入:键盘->内存 ➢输出:内存->显示器 实际上也可能是 ➢输入:外部设备->内存(读文件) ➢输出:内存->外部设备(写文件) 操作系统把各种设备都统一作为文件处理
文件
顺序文件的读写——读写字符串
例10.3 从键盘输入3个字符串,排序,把排
序后的字符串写入文件(P.342-343) 读上面写好的文件(P.344)
顺序文件的读写——格式化读写
fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列);
例: fprintf (fp,"%d,%6.2f",i,f); fscanf (fp,"%d,%f",&i,&f);
用文件扩展名”
文件的基本知识——流式文件
C语言把文件看作是字符(或字 节)的序列。
文件以“流”的形式在程序与操 作系统间流动。
文件的基本知识——数据的形式
根据数据的组织形式,数据文件可分为 ASCII文件:数据逐个字符的ASCII码 输出到外存,也称文本文件 二进制文件:内存中二进制形式的数据 直接输出到外存

最新C语言程序设计课件、教学资源演示文稿第10章 文件及其应用PPT课件

最新C语言程序设计课件、教学资源演示文稿第10章 文件及其应用PPT课件
对于二进制文件,以缓冲文件系统方式 读写文件的步骤同样为以下四个步骤: ①定义文件指针;②打开文件;③读写 文件;④关闭文件。
其中定义文件指针、打开文件和关闭文 件的操作在上一节中已介绍过,这里主 要学习用来读写二进制文件的两个函数 fread和fwrite。
学一学
块写入函数fwrite的调用形式为: fwrite(buffer,size,n,fp)将buffer开始处 的n个大小为size字节的数据块(记录)写 入到文件指针fp所指向的文件中。成功返 回数据块(记录)个数n,不成功返回0。
难点:
-文件的读写
学一学:文件基础知识
对文件的操作只有读和写两种,通常情况下, 将内存中的数据写入到文件,称为文件的输
出; 将文件中的数据读入到内存称为文件的输入
。 C语言中,以缓冲文件系统方式读写文件的
步骤为①定义文件指针; ②打开文件;③读 写文件;④关闭文件。
学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都 定义在文件stdio.h中,在源程序的开头 要包含头文件 stdio.h 。
提示:(1)语句char ch; 改为char *chInfo; (2)语句ch=fgetc(fp); while(ch!=EOF){ putchar(ch); ch=fgetc(fp);}
改为: fgets(chInfo,100,fp); printf("%s",chInfo);
注意,fgets函数中的第2个参数为要读取的字符数,要 大于或等于文件的长度+1。
难点:
-对数据块进行读写

英文词汇
File Binary

c语言程序设计教程第10章文件

c语言程序设计教程第10章文件
程序 输入文件缓冲区 缓冲文件系统: 非缓冲文件系统: 指令区 程序数据区 用户数据区 a 磁盘文件 磁盘
输出文件缓冲区 缓冲区
广西工学院
10.1.2 文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中
typedef struct { int _fd; int _cleft; int _mode; char *_next; char *_buff; }FILE;
//文件号 //缓冲区中剩下的字符数 //文件操作方式 //文件当前读写位置 //文件缓冲区位置
广西工学院
文件类型指针
有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变 量,以便存放若干个文件的信息。 例如,可以定义以下FILE类型的数组.FILE f[5];定义了一个结构 体数组f,它有5个元素,可以用来存放5个文件的信息. 可以定义文件型指针变量.
例2 FILE *fp; char *filename=“c:\\fengyi\\bkc\\test.dat” fp= fopen(filename,”r”);
例3 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); }
指针变量定义: FILE *fp; 说明:
fp是一个指向FILE类型结构体的指针变量。可以使fp指向某 一个文件的结构体变量,从而通过该结构体变量中的文件信 息能够访问该文件。也就是说,通过文件指针变量能够找到 与它相关的文件。如果有n个文件,一般应设n个指针变量(指 向FILE类型结构体的指针变量),使它们分别指向n个文件(确 切地说指向存放该文件信息的结构体变量),以实现对文件的 访问。

第10章文件操作.ppt

第10章文件操作.ppt
}FILE;
由系统定义的名为FILE的结构体描述
2021/3/21
11
C语言大学实用教程
文件类型指针
FILE *变量名; (FILE定义在stdio.h中)
文件类型指针的用法:
1、文件打开时
系统自动建立文件结构体,并把指向它的指针返 回,程序通过这个指针获得文件信息,访问文件。
2、文件关闭后
文件结构体被释放。
7
C语言大学实用教程
文件的存放
可以建立若干目录(文件 夹),在目录里保存文件, 同一级目录里保存的文件不 能同名。
对使用者而言,只要知道文 件的路径(全目录)和文件 名,就能使用该文件
C:\home\Sunner\main.c
2021/3/21
A: C: D:
home Sunner Secrets getnum.h getnum.c main.c 苏小红
例 文件打开与测试
FILE *fp;
fp=fopen("aa.c", "w");
if(fp==NULL)
{ printf("File open error!\n");
exit(0); }
2021/3/21
15
C语言大学实用教程
文件的关闭
作用: 文件指针变量与文件“脱钩”,释放文 件结构体和文件指针。
如果你想重新读已经读过的数据,或者要修改已 经写入的数据,可以发出流控命令
不会倒流的数据流也很多,例如网络上的数据流。
网络和数据线等介质只有很小的数据缓冲区,没
有大量存储的能力
2021/3/21
3
C语言大学实用教程
标准输入输出
字符界面的操作系统一般都提供标准输入与输出设备 DOS、Linux、Unix……

C程序设计课件第10章

C程序设计课件第10章

普通文件和设备文件
普通文件是指驻留在磁盘或其它外部介质上的一 个有序数据集,可以是源程序文件、目标程序文 件、可执行程序文件;也可以是一组待输入处理 的原始数据,或者是一组输出的结果。
设备文件是指与主机相联的各种外部设备,如显 示器、打印机、键盘等。
在操作系统中,把外部设备也作为文件来进行管 理,把它们的输入、输出等同于对磁盘文件的读 和写。通常显示器定义为标准输出文件,键盘是 标准输入文件
ASCII文件 二进制文件
文件名
文件名是文件的唯一标识,它的一般结构是
主文件名.扩展名
其中的扩展名可以省略,但通常都保留。
因为通过扩展名,可以判断文件类型。例如.
– .c
C语言的源程序文件
– .txt 文本文件
– .doc word文档文件
文件名分为
– 绝对文件名 从磁盘盘符开始描述的文件名
12 “ab+” 同“wb+”,但是不删除原有文件内容
关闭文件
函数原型
int fclose( FILE * stream );
调用方式 fclose( fp );
返回=值0EOF
操作成功 出错
读字符
函数原型:
int fgetc( FILE * fp );
功能 从fp指向的文件中读取一个字符,同时将读写位置 指针向前移动1个字节
返 回 值 = 读 E O 取 F 字 符 的 A S C I I 码
操 作 成 功 出 错 或 遇 到 文 件 结 束
写字符
函数原型 int fputc( int ch, FILE * fp );
功能 把字符ch写入fp指向的文件,同时将读写位置指针 向前移动1个字节。

《C语言程序设计与数据结构》课件第10章

《C语言程序设计与数据结构》课件第10章

“r+”
打开一个已经存在的文本文件,可以读取数据,也可以写入数据
“w+”
Hale Waihona Puke 打开一个文本文件,可以读取数据,也可以写入数据。若文件不存在,则自动建立一个新文件接受写入的数据;若文件存在,则删除文件中原有内容,并接受写入的数据(覆盖)
“a+”
打开一个已经存在的文本文件,可以读取数据,也可以写入数据(追加在文件的尾部)
2
C语言程序设计与数据结构
rewind函数
rewind函数的功能是把文件内部的位置指针移到文件首。其调用形式为:
rewind(文件指针);
“文件指针”指向被移动的文件。
01
03
02
C语言程序设计与数据结构
fseek函数
fseek函数用来移动文件内部位置指针,其调用形式为:
fseek(文件指针,位移量,起始点);
在C语言中,对文件的这些操作都可以由库函数来完成,对用到的库函数的声明包含在文件stdio.h中,因此在编程中要操作文件时,要使用头文件包含命令#include “stdio.h”。
C语言程序设计与数据结构
10.2.1 文件的打开
所谓打开文件,实际上是获得文件的各种有关信息,并使文件指针指向该文件,以便进行下一步操作。C语言提供了函数fopen来打开文件。 其使用格式为: 文件指针名=fopen(文件名, 使用文件方式); 其中,“文件指针名”必须是已被说明为FILE 类型的指针变量;“文件名”是将被打开的文件的文件名,通常是字符串常量或字符串数组(注意路径的分隔符应使用“\\”);“使用文件方式”是指文件的类型和操作要求,是一个由一对双引号括起来的字符串,共有12种,具体的符号表示和含义见表10-1。

C程序设计课件第10章

C程序设计课件第10章
第一次读了第100个成分 然后再读第3个成分 然后再用一个新的数据修改第50 成分 将其写入第50个成分中 然后又读第200个成分...,等等。 这是允许的,并且是正确的。
普通文件和设备文件
普通文件是指驻留在磁盘或其它外部介质上的一 个有序数据集,可以是源程序文件、目标程序文 件、可执行程序文件;也可以是一组待输入处理 的原始数据,或者是一组输出的结果。
同时,将读写位置指针向前移动size* count个字节。
一般来讲,数组buf每个元素的尺寸为size ,每个字段正好对 应数组buf的一个元素;即读入count个字段送入数组buf的 count个元素中。
写数据块
函数原型:
int fwrite( void *buf, int size, int count, FILE *fp );
库函数本身并不属于语言,它是系统根据需要提供给 用户使用的函数。C 标准定义了常用的函数库和每个函 数库中常用的库函数。但是不同的编译系统提供的函数 库不同,不同编译系统在每个函数库中提供的库函数也 不同。为了提高程序的可移植性,用户应该只使用 C 标准定义的函数库和库函数。
对应每个函数库,有一个头文件,在头文件中包 含相应函数库中所有函数的函数原型。用户使用 库函数时,需要把相应的头文件用 #include 命 令括入到自己的程序文件中。
test.c 表示相对于节 E:\doc\programing的相对文件名
顺序文件和随机文件
顺序文件的特点:文件分成两种模式
读模式 写模式 在任意时刻,一个顺序文件只能处于两种模式之一。当
一个顺序文件处于读模式时,只能从该文件读数据。
反之,当一个顺序文件处于写模式时,只能向该文件写 数据。
从操作角度看,顺序文件只能顺序操作。

《C语言程序设计》课件文件块读写与随机读写

《C语言程序设计》课件文件块读写与随机读写

功能:从fp所指向的文件中,读取n个大小为size的数据块,存
入指针p所指向的存储区域。 若输入操作成功,返回实际读出的数据块个数; 若文件结束或调用失败,则返回0。
3. 文件结束测试函数
C语言程序设计
函数原型: int feof(FILE *fp); 功能:测试fp所指向的文件是否已读到文件尾部。
如果函数执行成功,返回读写指针相对于文件开头的偏移量; 如果函数执行失败,返回-1;
4. 文件的随机读写
C语言程序设计
fseek函数
函数原型:int fseek(FILE *fp, long offset, int where);
功能:按照(起始点where+位移量offset)设置文件位置指针
文件
C语言程序设计
数据块读/写函数
1. 数据块写函数
C语言程序设计
写函数:int fwrite(void *p, int size, int n, FILE * fp);
p :某类型指针; size :数据块的大小(字节数); n :此次写入文件的数据块数; fp :文件指针变量。
功能:将p指向的存储区中的n个大小为size的数据块写入fp所
若该文件没有结束,返回0;否则,返回非0值。
文件
C语言程序设计
文件的随机读写
4. 文件的随机读写
void rewind(FILE *fp);
功能:将fp所指文件的位置指针重新返回到文件的开头。
ftell函数 函数原型: long ftell(FILE *fp); 功能:返回fp所指文件当前的读写指针位置。
指向的文件。 若输出操作成功,返回写入的数据块数; 若输出操作失败,则返回0。
2. 数据块写读函数

数据结构(C语言版)教学指导:第10章 文件

数据结构(C语言版)教学指导:第10章 文件
理论课时
4课时
实践课时
2课时
教学方法
知识讲授法、引导启发法、实例演示法
教学目标
了解文件的概念
熟悉各类文件的特点和构造方法。
了解在各类文件上的检索、插入和删除等操作。
掌握文本文件的格式化读写操作函数。
教学重点
各类文件的特点
散列文件的构造方法
各类文件上的检索、插入和删除等操作
文本文件的格式化读写操作函数
第10章10.5∽10.7
全部微课
微课10-5散列文件
学生自主
提前预习
微课10-6多关键字文件
微课10-7格式化读写操作函数
第10章10.5∽字文件
格式化读写操作函数
备注
所有专业文件的相关知识可以选讲
教学难点
各类文件的特点和构造方法
文本文件的格式化读写操作函数
教学计划
教材章节
学习内容
课时分配
第10章10.1∽10.4
全部微课
微课10-1文件的概念及分类
学生自主
提前预习
微课10-2顺序文件
微课10-3索引文件
微课10-4索引顺序文件
第10章10.1∽10.4
文件的概念及分类
2课时
顺序文件
索引文件
索引顺序文件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计与数据结构
【例10.1】将C盘根目录下的文本文件test1.txt的内容在屏幕上输出。 #include<stdio.h> main() { FILE *fp; /* 定义了文件指针fp */ char ch; if((fp=fopen("c:\\test1.txt","r"))==NULL) /*以读文本文件方式打开并使fp指向该文件*/ { printf("\nCannot open file, strike any key to exit!"); getchar(); exit(1); } ch=fgetc(fp); /* 先读出一个字符,然后进入循环 */ while(ch!=EOF) /* 判断文件是否结束 */ { putchar(ch); /*把该字符显示在屏幕上*/ ch=fgetc(fp); /*再读入下一字符 */ } fclose(fp); printf(“\n”); } 本例程序的功能是从文件中逐个读取字符,并在屏幕上显示。如打开文件出错,给出提示并退出程序。只 要读出的字符不是文件结束标志EOF,就把该字符显示在屏幕上,再读入下一字符。每读一次,文件 内部的位置指针向后移动一个字符,文件结束时,该指针指向EOF。执行本程序将显示文件c:\test1.txt 的所有内容。
“a” “r+” “w+”
“a个已经存在的二进制文件,只能读取数据 打开一个二进制文件,只能写入数据。若文件不存在,则自动建立一个新文件接受写入的数据;若文件存在,则删除文件中原 有内容并接受写入的数据(覆盖) 打开一个已经存在的二进制文件,只能写入数据(追加在文件的尾部) 打开一个已经存在的二进制文件,可以读取数据,也可以写入数据 打开一个二进制文件,可以读取数据,也可以写入数据。若文件不存在,则自动建立一个新文件接受写入的数据;若文件存在, 则删除文件中原有内容,并接受写入的数据(覆盖) 打开一个已经存在的二进制文件,可以读取数据,也可以写入数据(追加在文件的尾部)
C语言程序设计与数据结构
rewind函数
rewind函数的功能是把文件内部的位置指针移到 文件首。其调用形式为: rewind(文件指针); “文件指针”指向被移动的文件。
C语言程序设计与数据结构
fseek函数
fseek函数用来移动文件内部位置指针,其调用形式 为: fseek(文件指针,位移量,起始点); 其中: “文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是 long型数据,以便在文件长度大于64KB 时不会出 错。当用常量表示位移量时,要求加后缀“L”。 “起始点”表示从何处开始计算位移量,规定的起 始点有三种:文件首,当前位置和文件尾。
“ab” “rb+” “wb+”
“ab+”
C语言程序设计与数据结构
fopen打开文件
例如: FILE *fpTa; fpTa=fopen("c:\\cprogram\\abc","rb"); /*反斜线“\\”中的第一个表示转义字符*/ 其意义是打开C驱动器磁盘的cprogram子目录下的 文件abc,这是一个二进制文件,只允许按二进制 方式进行读操作。 又如: FILE *fp; fp= fopen ("mytest1.txt","r"); 其意义是在当前目录下打开文件mytest1.txt,只允 许进行“读”操作,并使fp指向该文件。
第10章 文件读写
C语言程序设计与数据结构
教学提示:存储在变量和数组(即内存)中的数据 是临时的,这些数据在程序运行结束后会消失,而 文件可以用来永久地保存大量的数据。如果有些数 据需要反复使用或永久保存,应该考虑使用文件来 完成。 教学要求:本章要掌握文件在读写之前必须打开, 读写结束必须关闭。文件可按只读、只写、读写、 追加四种操作方式打开,同时还必须指定文件的类 型是二进制文件还是文本文件。文件可按字节,字 符串,数据块为单位读写,文件也可按指定的格式 进行读写。文件内部的位置指针可指示当前的读写 位置,移动该指针可以对文件实现随机读写。
C语言程序设计与数据结构
10.1.1 文件分类
从用户的角度看,文件可分为普通文件和设备文件 两种。 根据文件的存储形式,可分为ASCII码文件和二进 制文件两种: (1) ASCII文件也称为文本文件,这种文件在磁盘中 存放时每个字符对应一个字节,用于存放对应的 ASCII码。例如一个整型数据1234在文本文件中占 4个字节。我们用Windows自带的记事本软件打开 该类型文件能读懂文件中的内容。 (2) 二进制文件是按二进制的编码方式来存放文件 的。例如一个整型数据230在二进制文件中占2个字 节。
C语言程序设计与数据结构
读字符函数fgetc
fgetc函数的功能是从指定的文件中读取一个字符,函数调用 的一般形式为: 字符变量=fgetc(文件指针); 例如:ch=fgetc(fp); 其意义是从打开的文件fp中读取一个字 符并送入字符变量ch中。 对于fgetc函数的使用有以下几点说明: (1) 在fgetc函数调用中,读取的文件必须是以读或读写方式打 开的。 (2) 读取字符的结果也可以不向字符变量赋值,例如fgetc(fp); 但是读出的字符不能保存。 (3) 文件内部的位置指针在文件打开时总是指向文件的第一 个字节。使用fgetc函数后,该位置指针将向后移动一个字 节。因此可连续多次使用fgetc函数来读取多个字符。
C语言程序设计与数据结构
10.4 读写文件
10.4.1字符读写函数fgetc和fputc 是以字符(字节)为单位的读写函数。每次可从文件读出或 向文件写入一个字符。字符输入/出函数所处理的文件可以 是文本文件,也可以是二进制文件。 10.4.2字符串读写函数fgets和fputs 处理的文件一般是文本文件,读写的数据以字符串为单位。 10.4.3数据块读写函数fread和fwtrite 用于整块数据的读写函数。可用来读写一组数据,如一 个数组、一个结构变量的值等。 10.4.4格式化读写函数fscanf和fprintf 与前面使用的scanf和printf 函数的功能相似,都是格式 化读写函数。两者的区别在于fscanf函数和fprintf函数的读 写对象不是键盘和显示器,而是磁盘文件。
注意:fseek函数一般用于二进制文件。在文本文 件中由于要进行转换,往往计算的位置会出现错误。
C语言程序设计与数据结构
ftell函数: 用来得到流式文件中的当前位置,用 相对于文件开头的位移量来表示。如返回-1L则表 示出错。 例如:long a; a=ftell(fp); 文件结束检测函数feof 函数feof( )判断文件是否处于文件结束位置,如文 件结束,则返回值为1,否则为0。 其调用格式为: feof(文件指针); 说明:文件结束标志EOF (每个文件末有一结束标 志EOF,值为-1)只适用于判断文本文件是否结束。 而函数feof( )则对文本文件和二进制文件都适用。
C语言程序设计与数据结构
10.2.2 文件关闭函数
在使用完一个文件以后,应该将该文件关闭,以 防止它再被调用或丢失数据。“关闭”就是使文件 指针变量不再指向该文件,也就是文件指针变量与 该文件“断开”,此后不能通过该指针对原来与其 相联系的文件进行读、写操作(除非再次打开该文 件,使文件指针变量重新指向该文件)。 fclose()函数用来关闭一个已经由fopen()函数打开 的文件,正常完成关闭文件操作时,fclose函数返 回值为0,有错误发生则返回非零值。 其调用的一般形式为: fclose(文件指针); 例如: fclose(fp);
C语言程序设计与数据结构
起始点 文件首 当前位置 文件末尾
表示符号
数字表示
SEEK_SET
0
SEEK_CUR
1
SEEK_END
2
C语言程序设计与数据结构
例如: fseek(fp,100L,0); /* 将文件位置指针移到离文 件头100个字节处 */ fseek(fp,20L,1); /* 将文件位置指针从当前位置 后移20个字节的位置 */ fseek(fp,-10L,SEEK_END); /* 将文件位置指针从文 件末尾前移10个字节的位置 */
C语言程序设计与数据结构
顺序读写和随机读写
文件的读写方式分为顺序读写和随机读写。 (1) 顺序读写即读写文件只能从头开始,顺序读写各个数据。 但在实际问题中常要求只读写文件中某一指定的部分,为 了解决这个问题可移动文件内部的位置指针到需要读写的 位置,再进行读写,这种读写称为随机读写。 (2) 随机读写可以通过利用系统函数去主动移动文件内部 的位置指针来实现。这样的函数主要有两个,即 rewind 函 数和fseek函数。实现随机读写的关键是要按要求移动位置 指针,这称为文件的定位。在移动位置指针之后,即可用 后面介绍的任一种读写函数进行读写。由于一般是读写一 个数据据块,因此常用fread和fwrite函数。
C语言程序设计与数据结构
10.1
文件概述与文件指针
所谓“文件”是指一组相关数据的有序集合。 我们在前几章中已多次接触使用过文件,例如 源程序文件、目标文件、可执行文件、库文件 (头 文件)等。
C语言程序设计与数据结构
10.1.1 文件分类
文件通常是驻留在外部介质(如磁盘等)上的,在使 用时才调入内存中来。C语言把文件看作是由一个 个字符(字节)的数据顺序组成的。它把数据看作 是连续的字符(字节)流,这样它对文件的存取实 际上是以字符(字节)为单位的。输入输出的数据 流的开始和结束只受程序的控制而不受特定符号 (比如回车换行符)的控制。也就是说,C语言在 输出数据到文件中时,并不会自动增加回车换行符 以示结束,在输入时也不会以读入回车换行符作为 数据的间隔。
C语言程序设计与数据结构
10.2.1 文件的打开
相关文档
最新文档