- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十六讲 文件
2
第十六讲 文件
文件的概念
文件指针
文件的打开与关闭
文件的读写
文件的定位
程序设计举例
C语言程序设计
3
简介
文件
存储在外存储器上的数据集合。
文件
内存
硬盘
写
读
保存在变量和数组中的数据是暂时的
大量的数据保存到文件实现永久存储
4
简介
数据的层次结构
文件
0010001110010011110101100110111001001001001111011010111010010111
…………
…………
……
文件
字段
字节
位
记录
5
简介
C语言的文件处理
C语言把文件看作是一个有序的字节或字符流。
文件
6
简介
文件的分类(按存储形式分)
文本文件
数据被作为字符,并以字符的二进制编码形式保存。
举例
文件
1234
‘1’
‘2’
‘3’
‘4’
整数
把4个字符的二进制编码写入文件中0011001000110100
7
简介
文件的分类(按存储形式分)
二进制文件
以数据在内存中的二进制形式保存。
举例
文件
1234
整数11010010
把值1234的二进制编码写入文件中
8
简介
文件的读写
缓冲文件系统
系统在内存中开辟一块缓冲区以便慢速的外设与其成块地进行数据交换。
向磁盘(文件)输出数据:
数据→缓冲区,装满缓冲区后→磁盘文件。
从磁盘(文件)读入数据:
先一次性从磁盘文件将一批数据输入到缓冲区,
然后再从缓冲区逐个数据读入到变量。
文件
9
文件指针
文件指针(指向文件的指针)
缓冲文件系统为每个使用的文件在内存中开辟一存储区存放其相关信息,这些信息用一个结构体变量保存,该结构体类型的名字是 FILE。
程序通过 FILE类型指针建立和文件的联系,进行关于文件的一切操作。
定义形式:
FILE *指针变量名;
举例:
定义了一个结构体FILE类型的指针变量:fp。
文件
用于存放文件的缓冲区首地址,即指向一个文件。
FILE *fp;
10
文件的打开
打开文件
方法:
为了打开一个文件,首先要为该文件定义一个文件类型指针;
然后用C语言提供的fopen()函数打开文件。
fopen函数有两个参数:
“文件名”与“文件使用方式”。
它们均是字符串。
一般形式:
文件
FILE *文件指针名;
…
文件指针名=fopen(文件名,文件使用方式);
11
文件的打开
打开文件
文件使用方式
文件
符号
意义
r(read)
以只读方式打开一个文本文件,若文件不存在,则返回空指针
w(write)
以只写方式打开或创建一个文本文件,并覆盖原有数据
a(append)
以追加方式打开或创建一个文本文件,并从文件末尾写数据
t(text)
文本文件,可省略不写
b(binary)
二进制文件
+
读和写
12
文件的打开
打开文件
举例
其意义是在当前目录下打开文件filea.dat,文件的使用方式为“只读”,并使fp指向该文件。
举例
其意义是打开c盘根目录下的文件fileabc.dat,这是一个二进制文件,只允许按二进制方式进行读操作。
两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。
文件
FILE *fp;
fp = fopen(filea.dat, r);
FILE *fpabc;
fpabc = fopen(“c:\\fileabc.dat, rb);
13
文件的关闭
关闭文件
使用fclose()函数。
一般形式:
fclose(文件指针);
举例
将fp指向的缓冲区中的数据存放到外存储器的文件中,然后释放该缓冲区,使文件指针变量不再指向与该文件对应的FILE结构,从而断开与文件的关联。
操作正常返回0,否则返回EOF(是在stdio.h文件中定义的符号常量,值为-1)。
文件
FILE *fp;
…
fclose(fp);
如果不关闭文件,将会丢失数据,并且一个C程序能同时打开的文件数有限,应该养成在使用完文件后关闭文件的习惯。
14
文件操作
文件操作的一般步骤
文件
/* 定义声明文件指针 */
FILE *fp;
/* 打开文件 */
fp = fopen(文件名, r);
/* 判断是否打开文件 */
if (fp == NULL) {
/* 当文件打开失败时的处理 */
}
/* 对文件进行读写操作 */
/* 关闭文件 */
fclose(fp);
15
文件的读写
C语言支持两种读写文件的方式
顺序读写
从文件中一个接一个地读写数据,仅当读写了前一个数据后,才能读写下一个数据。
在读写数据后,文件位置指针自动跳到下一个读写位置。
标准输入输出只能进行顺序读写。
随机读写
从文件中读写数据时可不考虑数据在文件中的位
文档评论(0)