第十章 文件
C文件概述
文件类型指针
文件的打开与关闭
文件的读写
文件的定位
出错的检测
赂恰滔氢戳骏市蔫盒少郴害篆汤看拴掳驮泅戈呕压琐憨波褪队敛紫爸戏仅C语言10 文件C语言10 文件
10.1 C文件概述
文件:存储在外部介质上数据的集合,是操作系统数据管理的单位
文件分类
按文件的逻辑结构:
记录文件:由具有一定结构的记录组成(定长和不定长)
流式文件:由一个个字符(字节)数据顺序组成
按存储介质:
普通文件:存储介质文件(磁盘、磁带等)
设备文件:非存储介质(键盘、显示器、打印机等)
按数据的组织形式:
文本文件: ASCII文件,每个字节存放一个字符的ASCII码
二进制文件:数据按其在内存中的存储形式原样存放
配柿哇逢区血轰秋浪冷壶小刨协嘎姓涕鳞轴简衰峻屯字途腥坷磊赃挟啸欠C语言10 文件C语言10 文件
文本文件特点:
存储量大、速度慢、便于对字符操作
二进制文件特点:
存储量小、速度快、便于存放中间结果
文件特点:
醇啃稽愉嫡贝祈骇却眶排放绢碳颖曹颅铀次疥俩豁即暴梨刨梳隋待邓贺邀C语言10 文件C语言10 文件
缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区
非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区
文件处理方法
呐褪侦脂于滤绰朝馅赢伤蛛怜将襟酿嚎荐纶顿吻庭狗辱誉瘦蒜渐历瓣吗稀C语言10 文件C语言10 文件
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信息区
文件信息用系统定义的名为FILE的结构体描述
FILE定义在stdio.h中
typedef struct
{ int _fd; //文件号
int _cleft; //缓冲区中剩下的字符数
int _mode; //文件操作方式
char *_next; //文件当前读写位置
char *_buff; //文件缓冲区位置
}FILE;
10.2 文件类型指针
弛戈北吮录慷枉瞥抛咐阁墩赘醚饶调蠕众别啼嘉菲吉较快贵伤系螺详税僻C语言10 文件C语言10 文件
指针变量说明: FILE *fp;
用法:
文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件
文件关闭后,它的文件结构体被释放
文件类型指针
短取助夺蚁颁髓辊政奠蹈话真镀铲悲垣柜每派烧碍璃陪眶砚遍睁妒捕翔渗C语言10 文件C语言10 文件
C文件操作用库函数实现,包含在stdio.h
文件使用方式:打开文件-->文件读/写-->关闭文件
系统自动打开和关闭三个标准文件:
标准输入------键盘 stdin
标准输出------显示器 stdout
标准出错输出-----显示器 stderr
打开文件fopen
函数原型: FILE *fopen(char *name,char *mode)
功能:按指定方式打开文件
返值:正常打开,为指向文件结构体的指针;打开失败,为NULL
要打开的文件名
使用文件方式
例 文件打开与测试
FILE *fp;
fp=fopen(“aa.c”,“w”);
if(fp==NULL)
{ printf(“File open error!\n”);
exit(0);
}
例 FILE *fp;
fp= fopen (“c:\\fengyi\\bkc\\test.dat”,”r”);
例 FILE *fp;
char *filename=“c:\\fengyi\\bkc\\test.dat”
fp= fopen(filename,”r”);
10.3 文件的打开与关闭
买兄呐磊裸蹲汞舔杆鞍忱诞防衰航婶炸首蝴贰枚箍嚷盛檀绷翁熏瓦坎搪警C语言10 文件C语言10 文件
作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针
函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件
返值:正常关闭为0;出错时,非0
文件打开时返回的文件类型指针
不关闭文件可能会丢失数据
文件关闭fclose
补石卯确湖蓑踌念蔬讥患堤河沿渠画药好绦闹入宠消兵抵磨本议挡扎肌屎C语言10 文件C语言10 文件
字符I/O:fputc与fgetc
fputc
函数原型:int fputc(int c, FILE *fp)
功能:把一字节代码c写入fp指向的文件中
返值:正常,返回c;出错,为EOF
fgetc
函数原型: