C语言 文件处理
1、理解文件
2、掌握文件的读写方法
常常需要将一些数据输出倒磁盘上,保存起来,以后使用,这就要用的磁盘文件
操作系统吧各种设备都统一作文文件处理(linux)
从操作系统的角度看,每一个与主机相连接的输入输出设备都看作是文件
例如:
终端键盘是输入文件
显示屏和打印机是输出文件
文件的概念:
1)文件 是存储在外部介质上数据集合
2)一批数据以文件的形式存放在外部介质上
3)操作系统是以文件位单位,对数据进行管理
4)想找存放在外部介质上的数据,先按文件名找到所指定的文件,然后再从该文件读数据
5)
(冯。诺依曼 计算机 组成部分:输入设备、输出设备、运算器、控制器、存储器。)
“流”是一个传输通道,数据可以从运行环境流入程序中,或者从程序流输出到运行环境
文件的分类:主要分为 ASCII文件 和 二进制文件
ASCII 文件以字符的方式存放,二进制文件是以 字节存放
c语言 采用缓存处理数据文件。
所谓缓存是指系统自动的在内存区位程序中每一个正在使用的文件开辟一个文件缓冲区
文件类型的指针 简称 文件指针
每个被使用的文件都在内存中开辟一个行文的文件信息区,用来存放文件的有关信息
这些信息保存在一个结构体变量中的,该结构体类型是由系统声明的 定义为 FILE
打开文件
对文件读写之前应该 先“打开” 该文件,就是讲文件放到内存
fopen(文件名,打开方式);
例如:
FILE *fp = fopen("a1","r"); 返回的是文件的指针(文件在内存缓冲区的首地址)
fopen函数反回值 是指向 a1文件的指针,通常赋值给一个指针变量
关于文件名a1 也可以是一个“路径+文件名” c:\abc.txt
--------------------------------------------------------------
打开方式:
r 读 w 写 a 追加
r+ w+ a+ 可读写的方式打开文件
t 打开文本文件
b 打开二进制文件
--------------------------------------------------------------
如果打开失败,fopen函数将返回空指针 NULL
if((fp=fopen("file1","r"))==NULL){
printf(“打开失败!”);
exit(0);
}
关闭文件
关闭文件用close函数,fclose函数的调用的一般形式为
fclose(文件指针);
例如:
fclose(fp); fp=0;
如果不关闭,文件将会丢失数据。
文件读写函数:
fgetc()/fputc() 字符读写函数
字符变量 = fgetc(文件指针);
从指定的文件中读取一个字符,如返回EOF,表示文件结束
fputc(字符变量,文件指针);
把一个字符写入指定的文件中,写入失败返回EOF
fgets()/fputs() 字符串读写函数
fgets(字符串1,n,文件指针)
从指定的文件中读取一个字符串倒字符串1中,失败返回NULL
fputs(字符串1,文件指针);
fread()/fwrite() 数据块读写函数
fread(字符串,数据块大小,数据块块数,文件指针);
读取文件到字符串中
fwrite(字符串,数据块大小,数据块块数,文件指针);
写入字符串倒文件中
fscanf()/fprintf() 格式化读写函数
fscanf(文件指针,格式化字符串,输入列表i);
从文件中 按照 格式化字符串读取文件到 输入列表
如: fscanf(*p,"%d,%d",&a,&b);
fprintf(文件指针,格式化字符串,输入列表i)
rewind函数是文件标记指向开头,作用是使文件标记重新返回文件的开头
rewind(文件指针)
fseek函数可以改变文件标记
fseek(文件指针,位移量,起始点)
使文件的指针相对于起始点的位移量
SEEK_SET 文件开始出开始搜索 SEEK_CUR 当前位置开始搜索 SEEK_END 从文件的结束处开始搜索
ftell 函数用于测定文件位置标记的当前位置
long i =ftell(fp);
如果出错,返回 -1l;
feof检测是否到达文件结尾
feof(文件指针) 返回针表示文件结束
putchar() 将字符串输出到显示器上显示。
putchar(10) 表示是一个换行符
练习:实现文件复制函数。
1、打开文件的时候,判断是否能够正常打开
2、读文件的时候检测是否到文件尾部
3、文件操作结束后,必须手工关闭文件,否则不恩保存信息到文件
作业:
1)实现文件的分割,文件的合并程序;
2)复习C语言课程
3)熟悉查询函数文档,快速找到字节需要的函数。