




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章 文件操作,10.1 C文件的有关概念,1、什么是文件 文件是存放在外部存储器上的数据的集合。 2、文件名 为了区分外存上不同的文件,对文件的存取操作是通过文件名来找到某文件。磁盘文件名一般表示为:文件路径文件名.扩展名,10.1 C文件的有关概念,3、文件的分类 按文件中数据格式分类 二进制文件:数据按二进制方式存放。如整数123占2个字节 文本文件:将数据转换成对应的ASCII代码存放。如123转换成三个字符,1,2,3占3个字节,10.1 C文件的有关概念,设备文件 我们前面的输入输出是从键盘输入数据,把数据输出到显示器上,这里把键盘、显示器看作是文件,称为设备文件。,10.1 C文件的有关概念,4、文件指针 C 语言规定文件类型是一种特殊的“结构型”,其特殊性在于其成员系统已经在名为stdio.h 的库文件中定义(P286),该结构型名为FILE 可以直接使用FILE定义文件类型的指针变量对文件进行访问,定义方法如下: FILE *文件型指针变量; 例:FILE *p, *q, *r; 注意: FILE 必须大写。,10.1 C文件的有关概念,系统定义的FILE型的指针变量 stdin(标准输入文件指针):键盘 stdout(标准输出文件指针):显示器 stderr(标准错误文件指针):用来输出出错信息,10.2 文件的打开与关闭,10.2 文件的打开与关闭,文件的打开:指为文件建立信息区(存放文件的信息)和文件缓冲区(存放输入输出的数据),并建立它们之间的联系。 文件的关闭:指撤销文件信息区和文件缓冲区。 1、文件的打开(函数:fopen) 首先定义文件指针: 如 FILE *fp; 然后打开文件:fp=fopen(文件名,使用文件方式); 它表示打开一指定文件,并使fp指向该数据文件; 文件名可以直接用带双引号的字符串常量,也可以用字符串变量。,10.2 文件的打开与关闭,使用文件方式有:,10.2 文件的打开与关闭,“r”、”w”、”a”、”r+”、”w+”、”a+”这六种方式是针对“文本文件”; “rb”、”wb”、”ab”、”rb+”、”wb+”、 ”ab+”这六种方式针对“二进制文件”,作用与前六种相同; 例: FILE *fp; fp= fopen(“C:a1.txt”, “r”);,10.2 文件的打开与关闭,说明: 如果打开文件出现错误,则fopen函数返回值为“NULL”,表示空,其值为0; 因此,常用以下方法打开一个文件 if ( fp= fopen(“file1”, “r”) = NULL ) printf (“cannot open this filen”); exit(0); 其中,exit(0)为关闭所有文件,终止正在执行的程序;,10.2 文件的打开与关闭,2、文件的关闭( fclose) fclose函数使用的一般形式为: fclose(文件指针) 例: fclose (fp); 当顺利执行了关闭操作则fclose返回值为0,否则为非0;,10.2 标准文件操作,3、标准设备文件的打开与关闭 标准设备文件使用时不用fopen函数打开,也不必用fclose函数关闭: stdin 标准输入设备(键盘) stdout 标准输出设备(显示器) stderr 标准错误输出设备(显示器),10.2 标准文件操作,4、feof 函数 例: feof (fp) 函数功能: 测试fp指向的文件是否到达文件尾; 返回值: 该函数当fp指向文件尾时,返回值为非0,否则为0; 该函数通常用来作为循环中的循环条件;,10.3 文件的顺序读写,顺序写:先写入的数据存放在文件中前面的位置,后写入的数据存放在文件中后面的位置。 顺序读:先读文件中前面的数据,后读文件中后面的数据。 顺序读写:对文件中数据读写的顺序和数据在文件中存放的物理顺序一致。 顺序读写用库函数实现。,10.3 文件的顺序读写,1、向文件读写一个字符 1)用 fputc函数向文件写入一个字符 fputc函数调用形式: fputc (ch, fp); 其中ch为一个字符常量或为一个字符变量;fp是文件型指针变量; 该函数功能: 将ch中字符写到fp所指文件的当前位置; 函数的返回值: 正确,则返回刚写入文件中的字符;错误,则返回EOF(符号常量,值为-1),10.3 文件的顺序读写,例:从键盘输入10个字符,写到c盘根目录下名为“a.txt”文件中 main() FILE *fp; int i; char ch; if (fp=fopen(“c:a.txt”, “w”)=NULL) printf (“file can not openn”); exit(0); for ( i=0; i10; i+) scanf(“%c”, ,10.3 文件的顺序读写,2)用 fgetc函数从文件读入一个字符 调用形式: fgetc (fp) 该函数功能: 从fp所指的文件的当前位置读取单个字符; 函数的返回值: 正确,则返回读的字符;错误,则返回EOF(符号常量,值为-1),10.3 文件的顺序读写,例:从c盘根目录下名为“a.txt”文件中读取字符并输出; main() FILE *fp; char ch; if (fp=fopen(“c:a.txt”, “r”)=NULL) printf (“file can not openn”); exit(0); while ( !feof (fp) ) ch= fgetc(fp); printf (“%c”, ch); 或 putchar(ch); 或 fputc(ch, stdout); fclose(fp); ,10.3 文件的顺序读写,例:编一个函数完成文本文件的复制,源文件名和目标文件名作为函数参数; void copy (char *f1, char *f2) FILE *fp1, *fp2; char ch; if (fp1=fopen(f1, “r”)=NULL) printf (“file can not openn”); exit(0); if (fp2=fopen(f2 , “w”)=NULL) printf (“file can not openn”); exit(0); while ( !feof(fp1) ) ch= fgetc (fp1); fputc (ch, fp2); fclose(fp1); fclose(fp2); ,10.3 文件的顺序读写,2、 向文件读写一个字符串 1)fputs 函数 调用形式: fputs (str, fp); 其中,str是字符串常量,或存放字符串的数组首地址,或指向字符串的指针变量 函数功能:将str指向的字符串去掉0后写入fp所指文件中;,10.3 文件的顺序读写,2)fputs 函数 调用形式: fgets (str, n, fp); 其中,str为字符数组或指向字符数组的指针变量; n为整型数据; 函数功能:从fp所指文件读n-1个字符,然后在其后补充一个字符串结束标记0存入字符数组str中;如果在读完n-1个字符之前遇到回车换行符或EOF(文件尾),读入结束;,10.3 文件的顺序读写,3、文件的格式化读写 用fprintf函数和fscanf函数实现: fprintf, fscanf 与 printf, scanf 作用相似,只是,fprintf, fscanf 的对象不是终端而是磁盘文件; 1)fprintf 函数 调用形式: fprintf(文件指针,格式字符串,输出表列); 例:fprintf (fp, “%d,%d”,x, y); 该语句的作用是将x,y的值按%d,%d的格式输出到fp指向的文件上;,10.3 文件的顺序读写,2)fscanf 函数 调用形式: fscanf ( 文件指针,格式字符串,输入表列); 例: fscanf (fp, “%d,%d”, 磁盘文件如有 3,8 则将磁盘文件中的数据3送给变量x,8送给变量y,10.3 文件的顺序读写,4、向文件读写一组数据 fread 函数和 fwrite 函数 1)fwrite 函数 调用形式: fwrite (buffer, size, count, fp) 其中,buffer是一个指针,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量; size 代表文件的每个数据所占用字节数; count代表写入文件的数据的个数; fp 是文件指针; 函数功能: 将buffer指向的count个数据(每个数据的字节数为size)写入fp指向的文件; 返回值:正确,则返回count值;错误,返回NULL(0),10.3 文件的顺序读写,例: main() FILE *fp; int a6=10; 12, 13, 15, 16, 18; if (fp=fopen(“c:a.txt”, “w”)=NULL) printf (“file can not openn”); exit(0); fwrite (a, sizeof(int), 6, fp); fclose (fp); ,10.3 文件的顺序读写,2)fread 函数 调用形式: fread (buffer, size, count, fp) 其中,buffer是一个指针,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量; size 代表读取的每个数据所占用字节数; count代表读取数据的个数; fp 是文件指针; 函数功能:从fp指向的文件读取count个数据(每个数据的字节数为size) 存入buffer指定的内存区; 返回值:正确,则返回count值;错误,返回NULL(0),10.3 文件的顺序读写,例: main() FILE *fp; int a6,i; if (fp=fopen(“c:a.txt”, “r”)=NULL) printf (“file can not openn”); exit(0); fread (a, sizeof(int), 6, fp); for (i=0; i6; i+) printf(“%d”,ai); fclose (fp); ,10.4 文件的随机读写,文件的随机读写: 文件中有一个位置指针,指向当前读写的位置,如顺序读写一文件,每次读写一个字符,则读完一个字符后,该位置指针自动移动指向下一个字符位置; 1)rewind函数 该函数的作用是使位置指针重新返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术合同涉税政策
- 电商行业买卖合同
- 办公楼装饰施工方案
- 长期供货合同的协议书
- 员工考勤记录表格系列
- 设备采购预算表格化统计分析报告
- 合同执行进展一览表
- 宿州拆烟囱施工方案
- 儿童厕所改造施工方案
- 别墅背景墙大理石施工方案
- 《素描》课件-第一章 素描入门
- DL5168-2023年110KV-750KV架空输电线路施工质量检验及评定规程
- 工资条(标准模版)
- 皮肤科常用护理技术操作规程
- 第四讲 搜索引擎检索
- 四川省中小流域暴雨洪水计算表格(尾矿库洪水计算)
- 新视野大学英语(第三版)读写教程Book4-Unit7-Section-B-A-worldwide-food-crisis课件
- 毛笔字练习基本笔画及毛笔字基本笔画入门
- 《广东省建筑与装饰工程综合定额2023》
- Overture 4.0 中文版使用手册(V1.0)-IT计算机-专业资料
- 带括号的方程计算题100道
评论
0/150
提交评论