版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1北京石油化工学院第10章文件程序中如何获得数据?程序的运行结果存在何处?一个程序的运行结果做另一个程序的输入数据?程序初始化赋值语句键盘输入格式输入字符输入字符串输入内存外存格式输出字符输出字符串输出内存外存文件文件的概念从文件中读数据向文件中写数据2三、文件的处理形式缓冲文件系统:磁盘->缓冲区->程序数据非缓冲文件系统:程序根据需要分配空间现在统一使用缓冲文件系统程序数据区输出文件缓冲区输入文件缓冲区磁盘系统自动地在内存中为每一个打开的文件建立一个缓冲区,文件的存取都通过缓冲区进行512字节缓冲文件系统FILE存放文件有关信息3文缓冲文件系统可以处理两种不同的文件(ASCII)文本文件二进制文件四、文件的存储方式二进制文件:将数据按内存中的存储形式输出到磁盘上ASCII文件:文本文件,按字符处理,每个字符占一个字节例如:102400110001001100000011001000110100
0000010000000000
0000010000000000
ASCII码1024内存形式
整型数1024
外存形式转换直接
二进制文件
文本文件41.创建一个新文件2.删除一个旧文件3.对文件中的数据进行读,写操作4.对文件进行按名访问5.对存放文件的空间进行管理6.限定文件的使用权限文件型指针一个文件系统的功能
C对文件的管理是通过一个文件型指针实现的操作步骤1.测试文件存在或新建2.打开文件(将文件从外存调到内存)3.对文件的操作,通过库函数实现4.关闭文件(将文件清除内存)文件型指针5文件型指针是一个由系统定义的具有固定结构的结构类型变量,用于存放文件的有关信息一、定义:
FILE*文件指针名二、功能:通过文件指针实现对文件的访问三、过程:在读写文件之前,首先用系统库函数fopen()将指定文件打开,接受文件的外部名,通过操作系统,返回文件的内部名,然后通过文件的内部名进行读,写操作,其中,文件的内部名就是文件指针,最后,操作结束,将文件关闭FILE6C通过结构变量FILE对文件管理,每一个文件对应的流的控制信息集中在FILE型的结构变量中
typedefstruct{unsignedflags;/*文件状态标志*/
int-fd;/*文件号*/
int-cleft;/*缓冲区剩下的字符*/
int-mode;/*文件操作模式*/
char*-nextc;/*下一个字符位置*/
char-buff;/*文件缓冲区位置*/}FILE;用FILE结构体类型可定义数组、变量、指针例:FILExs[30],a,b,*fp;FILE结构如下:7文件指针是一个指向FILE的指针FILE*fp;fp代表了数据流,称为文件指针变量C中所有的I/O函数都是通过文件指针存取数据流(文件)的数据定义在stdio.h中8文件必须打开后才能使用通过文件指针打开文件文件的打开与关闭一、文件打开函数1.先定义一个文件指针FILE*fp;
2.功能:打开文件的过程是系统为文件分配一个缓冲区,建立一个文件内部名,返回一个指向该文件的指针例:fp=fopen(“file.dat”,”r”);fopen(......)文件指针名=fopen(文件名,文件的操作方式)9(1)文件名(2)文件的操作形式(3)哪个指针指向被打开的文件fp=fopen(“file.dat”,”r”);含义*打开文件名为file.dat文件*fopen函数带回一个指向file.dat文件的指针,并将其赋给文件型指针*文件型指针指向文件file.dat当系统使用fopen函数时,编译系统会知道?103.文件的使用方式:“r”从文件中向计算机中读数据“w”从计算机中向文件中写数据“a”从当前打开的文件的结尾追加新数据4说明:(1)使用r时,被打开的文件必须存在(2)使用w时,如文件名是新的,则新建一个文件,如文件名已存在,则覆盖原来内容11(3)打不开的情况:*使用r,文件不存在*使用w,磁盘已满,或磁盘损坏此时,fopen()函数返回一个NULL在stdio.h中,指定NULL的值为0(4)指定文件名时可以有路径,但表示成
fopen(“\\路径1\\..\\文件名“..…);双斜杠fp=fopen(“c:\\tc\\file.dat”,”r”);12文件的操作方式:r:从文本文件中读数据rb:从二进制文件中读数据r+:从文本文件中读写数据rb+:从二进制文件中读写数据w:向文本文件中写数据wb:向二进制文件中写数据w+:向文本文件中读写数据wb+:向二进制文件中读写数据a:从指定文本文件末尾添加数据ab:从指定二进制文件末尾添加数据a+:从文本文件头读数据,从文件尾追加数据ab+:从二进制文件头读数据,从结尾添加13三、文件关闭函数例:FILE*fp;fp=fopen(“file.dat”,”w”);………fclose(fp);如果成功地完成了关闭操作,函数fclose()带回一个返回值01格式:fclose(文件指针名)2功能:将已打开的文件关闭(清除内存)14文件的读写功能:将字符写入指定文件中,输出成功时函数返回输出的字符,如果输出失败,函数返回EOF,在stdio.h中EOF定义为
-1。例:fputc(ch,fp);一、字符的读/写1.写字符格式:fputc(字符变量名,文件指针名)2.读字符格式:fgetc(文件指针名)功能:从指定文件中读取一个字符,赋给字符变量如果读取成功,函数带回读取的字符,如果遇到结束符,函数返回-1。
例:ch=fgetc(fp);
15#include<stdio.h>main(){FILE*fp;charch='a';fp=fopen("file.dat","w");fputc(ch,fp);fclose(fp);}结果:将字符a写入文件file.dat中#include<stdio.h>main(){FILE*fp;charc1;fp=fopen("file.dat","r");c1=fgetc(fp);putchar(c1);fclose(fp);}从文件file.dat中,将刚才写入的字符读出16二、字符串的读写函数1.写字符串格式:fputs(字符数组名,文件型指针名)功能:向指定文件中写入指定的字符串(字符数组或字符指针)函数成功,返回值为0,否则,返回值为非0值2.读字符串格式:fgets(字符数组名,n,文件指针名)功能:从指定文件中,读n-1个字符,送到指定的字符数组(或字符指针)中,函数成功,返回串的首地址
字符串读入后,系统追加一个‘\0’
如果在n-1个字符内遇换行符或EOF,提前结束17#include<stdio.h>main(){FILE*fp;char*c1="TruboC";charc2[10];
fp=fopen("file2.dat","w");fputs(c1,fp);fclose(fp);
fp=fopen("file2.dat","r");fgets(c2,8,fp);printf("%s\n",c2);fclose(fp);}18功能:从指定的文件中,按指定格式读取变量送入对应的地址中文件的读写三、格式读写1.格式写:fprintf(文件指针,格式控制串,输出表列);功能:将指定的变量按指定的格式,写入指定的文件中2.格式读:fscanf(文件指针,格式控制串,输入表列)注意比较Scanf(“%d,%d”,&a,&b);fscanf(fp,”%d,%d”,&a,&b);printf(“%d,%d\n”,a,b);fprintf(fp,”%d,%d\n”,a,b);19#include<stdio.h>main(){FILE*fp;char*c1="TurboC";charc2[10];fp=fopen("file3.dat","w");fprintf(fp,"%s",c1);fclose(fp);fp=fopen("file3.dat","r");fscanf(fp,"%s",c2);printf("%s\n",c2);fclose(fp);}20fscanf(),fprintf()文件按格式读写scanf(),printf()标准输入,输出设备读写fputs()fgets()文件读写一个串puts()gets()标准设备读写一个串fputc()fgetc()文件读写一个字符putchar()getchar()标准设备读写字符函数名,参数,功能21f为一个实型数组的数组名(起始地址)4为一次读4个字节2为从文件中读2次四、按数据块读写1.写数据块:fwirte(buffer,size,count,fp);
fread(f,4,2,fp);从文件中读取数据,存入数组f中,函数成功,返回count的值2.读数据块:fread(buffer,size,count,fp);buffer
为所读数据的存放地址size:
要读的字节数(数据块的大小)count:读几个数据块fp为文件型指针22文件状态检测在文件处理过程中,有时输入输出函数需要文件的状态信息,最常用的是判断文件是否结束C提供了两种方法判断文件是否结束一、关键字EOF读写文本文件时,用EOF判断是否已经读到了文件尾,此时EOF的值为-1while((c=fgetc(fp)!=EOF))文件没结束
putchar(c);输出读出的字符不能用于二进制文件例如:fgetc从文件中读字符,一次读一个,可以判断23二、使用库函数格式:feof(文件指针名)功能:当文件结束时,返回非0值,文件未结束,返回0while(feof(fp)==0)c=fgetc(fp);例:从文件中一次读一个字符,直到文件结束24#include<string.h>#include<stdlib.h>#include<stdio.h>main(){FILE*fp;inti=0;charstr[81],filename[80];gets(filename);if((fp=fopen(filename,"w"))==NULL){printf("cannotopenthisfile\n");exit(0);}while(strlen(gets(str))>0){fputs(str,fp);fputs("\n",fp);i++;}fclose(fp);fp=fopen(filename,"r");while(feof(fp)==0){fgets(str,i-1,fp); puts(str);}}从键盘输入若干个串,将它们写到磁盘上25请补充main函数,该函数的功能是:先以只写方式打开文件"out11.dat",再把字符串str中的字符保存到这个磁盘文件中。
注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#defineN80
voidmain()
{fILE*fp;
inti=0;
charch;
charstr[N]="I'mastudent!";
system("CLS");
if((fp=fopen(【1】))==NULL)
{printf("cannotopenout11.dat\n");
exit(0);}while(str[i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无菌医用敷料的产品设计与材料开发考核试卷
- 电气机械设备的故障排除与应急处理考核试卷
- 塑料垃圾处理与资源化利用的探索考核试卷
- DB11∕T 1816-2021 大型活动志愿者服务规范
- 人教版选修4-5全套教案
- 参与拼音课件教学课件
- 淮阴工学院《工业催化导论》2022-2023学年第一学期期末试卷
- 直线马达试验台行业相关投资计划提议范本
- 包覆贵金属金属材料相关行业投资方案范本
- 2024年国内贸易居间委托协议
- 酒店的基本概念
- 重点但位消防安全标准化管理评分细则自评表
- 挂牌仪式流程方案
- 传输s385v200v210安装手册
- 风险调查表(企业财产保险)
- 农业信息技术 chapter5 地理信息系统
- 浅谈新形势下加强企业税务管理的对策研究
- 必看!设备管理必须要懂的一、二、三、四、五
- 空冷岛专题(控制方案、谐波及变压器容量选择)
- 结合子的机械加工工艺规程及铣槽的夹具设计
- 液氧汽化站安全技术操作规程2018-07.docx
评论
0/150
提交评论