1
第十二讲文 件
2
本节学习目标
文件的基本概念
文本文件的基本操作
二进制文件基本操作
其它文件函数的使用
3
文件及文件名
什么是文件?
– 存储在外部存储介质上数据的集合。以及终端和打印机等任何设备。
什么是文件名。
– 由文件主名,扩展名
4
文件流
什么是文件流?
– 文件系统将每个物理设计转换成的逻辑设备,
即文件系统为用户提供的一个接口。
– 实际的设备称为文件
– 抽象的设备称为文件流
5
文件流的功能
帮助用户操作各种不同的终端设备
为用户与终端设备之间创建一个接口
6
文件流的分类
文本流
– 文本流是一串字符串,
即 ASCII码。
二进制流
– 二进制流是一系列字节,与外部设备上的字节一一对应。
7
文件的类型
ASCII码文件
– 用 ASCII码来表示文件内容的文件
特点:
– 占用较大的内容存储空间,读取过程需要转换。
二进制文件
– 将内存中的数据按存储方式进行原样输出到磁盘上。
特点:
– 节约内存空间,无需读取数据的转换过程。
8
文本文件的基本操作
文件打开的操作
文件关闭的操作
9
定义文件指针格式? 格式说明:
– 表明 fp是一个指向文件的指针
– FILE必须大写
FILE *fp
10
文件打开的操作
基本格式? 格式说明:
– 功能:打开或创建一个文件的操作
– Fopen返回的是一个指针
– 打开方式的选择(下表)
– 若操作失败,返回
NULL值
FILE *fp;
fp=fopen(“文件名”,“打开方式” )
11
文件打开方式打开方式 含 义
r 打开文本文件进行读的操作
w 创建文件进行写的操作
a 向文件追加数据
r+ 打开文本文件进行读 /写的操作
w+ 创建文件进行读 /写的操作
a+f 追加或创建文件进行读 /写操作
12
fopen范例
FILE *fp;
fp=open(“first.txt”,“w”);//写的方式
if (fp==NULL)
{
printf("Error");
exit(1);
}
13
文件关闭的操作
基本格式? 关闭文件的功能:
– 节约系统资源
– 防止数据的丢失
– 养成关闭文件的习惯
FILE *fp;
fp=fopen(“文件名”,“打开方式” )
fclose(fp)
14
fgetc()字符读取函数
功能
– 从指定的文件中读取一个字符
基本格式 fgetc(文件指针 )
15
fputc()字符写入函数
功能
– 向指定的文件中写入一个字符
基本格式 fputc(字符,文件指针 )
16
范例
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp; char ch=' ';
fp=fopen("first.txt","w");
if (fp==NULL)
{
printf("Error"); exit(1);
}
printf("请输入一个字符,");
ch=getchar();
while (ch!='@')
{
fputc(ch,fp); ch=getchar();
}
fclose(fp); //写入字符过程
17
范例
fp=fopen("first.txt","r");
if (fp==NULL)
{
printf("Error");
exit(1);
}
while (ch!=EOF)
{
ch=fgetc(fp);
putchar(ch);
}
getchar();
fclose(fp);
//输出字符过程
}
18
字符串输入 /输出函数
fputs()写入函数
功能:
– 向指定文件输入一个字符串
格式:
fgets()读取函数
功能:
– 从指定文件读取一个字符串
格式:
fputs(字符串,文件指针 ); fgets(指针,串长度,文件指针 );
19
二进制文件的基本操作
二进制文件的打开方式
fwrite()函数的使用
fread()函数的使用
20
二进制文件打开方式打开方式 含 义
rb 打开二进制文件进行读的操作
wb 创建二进制文件进行写的操作
ab 向二进制文件追加数据
r+b 打开二进制文件进行读 /写的操作
w+b 创建二进制文件进行读 /写的操作
a+b 追加二进制文件进行读 /写操作
21
fwrite()函数的使用
功能
– 向指定的文件写入一个数据块(例如:结构体、数组等)
格式
fwrite(buffer,size,count,fp);
22
fread()函数的使用
功能
– 从指定的文件读取一个数据块(例如:结构体、数组等)
格式
fread(buffer,size,count,fp);
23
格式说明参数 含义
buffer 读取 /写入的数据内存中的起始地址
size 读取 /写入的数据长度(字节)
count 一次读取 /写入的数据
fp 文件指针
24
课堂练习
25
fprintf函数与 fscanf函数
同 printf和 scanf作用相似,只是输出的终端不一样,一个是向计算机终端,一个向磁盘文件。
格式:
– fprintf(文件指针,“格式控制符”,输出列表 );
– fscanf(文件指针,“格式控制符”,地址列表 );
26
其它文件函数
feof()函数
rewind()函数
ferror()函数
remove()函数
fflush()函数
fseek()函数
五个标准流
27
rewind()函数
功能
– 将文件指针重新指向文件开始位置。
格式
rewind(fp)