N CMRASE CRANN NMRRIE INASE CIANNE 第十三章文件
第十三章 文件
MANNGPAMAO AWNNOPAIMAVNPMIR LAC AM 131文件的概念 132文件的使阻 133文件的打开与关闭 134向文件中写数据 135往文件中追加数据 136从文件中读取数据 137文件的定位 138其它读写函数 《C语言程序设计》
《C语言程序设计》 2 目 录 • 13.1 文件的概念 • 13.2 文件的使用 • 13.3 文件的打开与关闭 • 13.4 向文件中写数据 • 13.5 往文件中追加数据 • 13.6 从文件中读取数据 • 13.7 文件的定位 • 13.8 其它读写函数
73.7文的念 我们在学习Win95和DOS时已经接触到了文件 的概念。所谓文件一般指存放在外部存储器中 数据的集合。外部存储器包括磁盘(软盘和硬 盘)、磁带、光盘等。我们通过文件名来访问 某个文件,DOS使用8.3的文件名格式,Win95 支持长文件名,文件名可以长达255个字符。 前面各章中我们都是从键盘输入数据,运行结 果输出到屏幕上。有时我们需要将运行结果输 出到磁盘上保存起来,以后需要时再将数据从 磁盘直接输入到计算机内存,这样我们就用到 了磁盘文件。 《C语言程序设计》
《C语言程序设计》 3 13.1 文件的概念 • 我们在学习Win95和DOS时已经接触到了文件 的概念。所谓文件一般指存放在外部存储器中 数据的集合。外部存储器包括磁盘(软盘和硬 盘)、磁带、光盘等。我们通过文件名来访问 某个文件,DOS使用8.3的文件名格式,Win95 支持长文件名,文件名可以长达255个字符。 • 前面各章中我们都是从键盘输入数据,运行结 果输出到屏幕上。有时我们需要将运行结果输 出到磁盘上保存起来,以后需要时再将数据从 磁盘直接输入到计算机内存,这样我们就用到 了磁盘文件
C语言将文件看作一个字符(字节)序列,根 据数据的组织形式分为文本文件和二进制文 件两类。 文本文件中的每一个字节存放一个ASCⅢ码, 代表一个字符; 二进制文件则是将数据按内存中的原样(二 进制形式)存放在磁盘上。 例如有一个十进制整数54321,它在内存中占 两个字节,如图,如果将它输出到文本文件 则占5个字节,输出到二进制文件占2个字节。 《C语言程序设计》
《C语言程序设计》 4 文本文件和二进制文件 • C语言将文件看作一个字符(字节)序列,根 据数据的组织形式分为文本文件和二进制文 件两类。 • 文本文件中的每一个字节存放一个ASCII码, 代表一个字符; • 二进制文件则是将数据按内存中的原样(二 进制形式)存放在磁盘上。 • 例如有一个十进制整数54321,它在内存中占 两个字节,如图,如果将它输出到文本文件 则占5个字节,输出到二进制文件占2个字节
文本文件 内存中 0010100100|001101001000100 110101000010001 二进制文件|1101000 文本文件和二进制文件各有特点,二进制 文件占存储空间较小,而文本文件更直观, 可以用Win95中的记事本程序或DOS中的 TYPE命令直接查看。 《C语言程序设计》
《C语言程序设计》 5 文本文件和二进制文件 • • 文本文件和二进制文件各有特点,二进制 文件占存储空间较小,而文本文件更直观, 可以用Win95中的记事本程序或DOS中的 TYPE命令直接查看。 内存中 文本文件 00110101 00110100 00110011 00110010 00110001 11010100 00110001 '5' '4' '3' '2' '1' 二进制文件 11010100 00110001
缓化学缓比件系统 早期的C语言有两种处理文件的方法:一种叫“缓 冲文件系统”,一种叫“非缓冲文件系统”。 所谓缓冲文件系统是指:系统自动地在内存中为每 个正在使用的文件开辟一个缓冲区。输出时,程 序中的数据先送入缓冲区,装满后才一起输出到磁 盘;输入时,先从磁盘读一批数据到缓冲区(充满 之),然后逐个将数据送到程序中(赋给变量) 缓冲区的大小因C版本而定,一般为512字节。 所谓非缓冲文件系统是指:系统不自动开辟缓冲区, 缓冲区由编程者自己开辟、管理。1983年, ANSIC 不再采用非缓冲文件系统,我们也不再作介绍。 《C语言程序设计》
《C语言程序设计》 6 缓冲文件系统与非缓冲文件系统 – 早期的C语言有两种处理文件的方法:一种叫“缓 冲文件系统”,一种叫“非缓冲文件系统”。 – 所谓缓冲文件系统是指:系统自动地在内存中为每 一个正在使用的文件开辟一个缓冲区。输出时,程 序中的数据先送入缓冲区,装满后才一起输出到磁 盘;输入时,先从磁盘读一批数据到缓冲区(充满 之),然后逐个将数据送到程序中(赋给变量)。 缓冲区的大小因C版本而定,一般为512字节。 – 所谓非缓冲文件系统是指:系统不自动开辟缓冲区, 缓冲区由编程者自己开辟、管理。1983年,ANSI C 不再采用非缓冲文件系统,我们也不再作介绍
132作的用 NHAIANNAiC 我们使用文件的目的是为了存放数据,因此, 对文件的操作主要可以分为两种:读操作和 写操作。读操作是从文件中读取数据;写操 作是往文件中写数据,包括建立一个新文件 往文件中追加数据、插入数据或修改数据。 C语言中没有专门处理文件的语句,对文件 的读写操作都是由库函数来完成的。这些库 函数的声明都保存在头文件 stdio.h中,因此 在程序的头部要加上# nclude。 《C语言程序设计》
《C语言程序设计》 7 •13.2 文件的使用 • 我们使用文件的目的是为了存放数据,因此, 对文件的操作主要可以分为两种:读操作和 写操作。读操作是从文件中读取数据;写操 作是往文件中写数据,包括建立一个新文件、 往文件中追加数据、插入数据或修改数据。 • C语言中没有专门处理文件的语句,对文件 的读写操作都是由库函数来完成的。这些库 函数的声明都保存在头文件stdio.h中,因此 在程序的头部要加上#include
文作类型 缓冲文件系统中,每个正在被使用的文件 都在内存中开辟一个区域,存放有关该文 件的信息(如文件名、文件状态、当前位 置等)。C语言将这些信息保存在一个结 构体变量中,该结构体类型是由系统定义 的,取名为FILE(见课本310页)。 《C语言程序设计》
《C语言程序设计》 8 文件类型 • 缓冲文件系统中,每个正在被使用的文件 都在内存中开辟一个区域,存放有关该文 件的信息(如文件名、文件状态、当前位 置等)。C语言将这些信息保存在一个结 构体变量中,该结构体类型是由系统定义 的,取名为FILE(见课本310页)
1/3形关 133.1打开文件函数 [fopen 1332关闭文件函数、检测错误函数 《C语言程序设计》
《C语言程序设计》 9 •13.3 文件的打开与关闭 • 13.3.1 打开文件函数fopen • 13.3.2 关闭文件函数、检测错误函数
31数0n 对文件进行读写之前应当“打开”该文件, 读写完毕之后应当“关闭”该文件。 ANSI C规定使用 fopen函数来打开文件。 fopen函数的原型为 FILE*fopen(char filename, char*mode 其中, filename指定要打开的文件名,可以使 用字符串常量,也可以使用指向字符串的指 针变量;mode表示文件的使用方式(见312页 表131)。 《C语言程序设计》
《C语言程序设计》 10 13.3.1 打开文件函数 fopen • 对文件进行读写之前应当“打开”该文件, 读写完毕之后应当“关闭”该文件。 • ANSI C规定使用fopen函数来打开文件。 fopen函数的原型为: –FILE *fopen(char *filename, char *mode); • 其中,filename指定要打开的文件名,可以使 用字符串常量,也可以使用指向字符串的指 针变量;mode表示文件的使用方式(见312页 表13.1)