C语言程序设计9文件优质PPT.ppt
- 文档编号:14285518
- 上传时间:2022-10-21
- 格式:PPT
- 页数:22
- 大小:758.50KB
C语言程序设计9文件优质PPT.ppt
《C语言程序设计9文件优质PPT.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计9文件优质PPT.ppt(22页珍藏版)》请在冰豆网上搜索。
,文件指针,在缓冲文件系统中,每个被使用的文件的信息(如文件名、位置、类型等)都保存在一个特殊定义的结构类型的变量中。
该结构用户定义名为:
FILE,可以定义一个指向FILE类型的结构指针,打开文件是让该指针指向文件对应的结构变量,通过该指针对文件进行操作。
FILE*fp;
8.3文件的打开与关闭,文件的打开fopen()函数,fopen函数的原型在stdio.h文件中说明,该函数的作用是打开缓冲文件。
使用方法:
fp=fopen(filename,mode);
打开文件的文件名或设备名。
文件的读写方式。
文件信息结构的指针。
fp=fopen(“a:
wang.dat”,”w+”);
说明:
如果fopen失败,则函数返回空指针NULL;
当文件打开错误时,程序不应继续执行,一般以如下方式打开文件:
if(fp=fopen(filename,mode)=NULL)printf(“FileOpenError!
n”);
exit
(1);
文件的读写方式说明:
文件的关闭fclose函数,文件使用完必须关闭,关闭文件的目的是:
保证文件的数据不丢失,将buffer的数据回写文件。
释放buffer。
关闭文件函数的使用:
fclose(文件指针);
fp=fopen(“a:
d.dat”,”w+”);
/*文件的读写*/fclose(fp);
如果关闭正确fclose返回0;
关闭失败fclose返回非0。
文件读写的方式,文件按读写方式可以分为:
顺序读写随机读写,顺序读写:
顺序向后读写。
随机读写:
给定位置读写。
8.4文件的读写,文件的读写是由定义在stdio.h中的一组函数的集合所实现的。
fputc函数和fgetc函数,fputc函数,使用方法:
fputc(ch,fp);
含义:
将字符ch写入文件指针对应的文件的当前位置。
返回值:
写入正确返回ch的值;
失败返回EOF(在stdio.h中定义为-1)。
fgetc函数,使用方法:
ch=fgetc(fp);
/*ch为字符型变量。
*/,含义:
从文件指针fp对应的可读文件的当前位置读一个字符返回赋值给ch。
feof函数,使用方法:
i=feof(fp);
判断文件是否结束。
1代表文件结束;
0代表文件未结束。
#includevoidmain(intargc,char*argv)FILE*in,*out;
if(argc!
=3)printf(“Commandformaterror!
exit(0);
if(in=fopen(argv1,“r”)=NULL)printf(“cannotopentheinfilen”);
if(out=fopen(argv2,“w”)=NULL)printf(“cannotopentheoutfilen”);
while(!
feof(in)fputc(fgetc(in),out);
fclose(in);
fclose(out);
打开源文件,打开目标文件,当源文件未结束时,读一个字符写入目标文件。
关闭文件,chp8ex1,举例:
将一个磁盘文件中的内容复制到另一个文件中。
文件的字符串的输入和输出函数,字符串输入函数,使用方法:
fgets(str,n,fp);
从fp所对应的文件的当前位置读n-1个字符到str所指向的内存单元。
并在结束处加0表示字符串结束。
三种情况可以使输入结束:
输入完n-1个字符;
输入时遇到n;
输入时遇到文件结束标志。
字符串输出函数,使用方法:
fputs(str,fp);
将str指向的字符串,输出到fp所对应的文件中,并忽略输出字符串结束标志0。
#include#include#defineSIZE256voidmain(intargc,char*argc)charbuffSIZE;
FILE*fpr,*fpw;
fpw=stdprn;
if(fpr=fopen(argc1,“r”)=NULL)printf(“Fileopenerror!
while(fgets(buff,SIZE,fpr)!
=NULL)fputs(buff,fpw);
fclose(fpr);
打开文件,输入。
输出到打印机。
文件指针执行设备:
stdprn打印机;
stdaux串口;
stdin、stdout。
举例:
从文件中输入字符串,并打印其内容。
文件的格式化输入和输出函数,fp文件指针format,格式说明字符串,取%d、%x、%f、%c等;
说明输入转化的格式。
&
arg1&
argn,接收输入变量的地址列表。
格式化输入函数fscanf,使用方法:
fscanf(fp,format,含义:
从fp对应的文件的当前位置,顺序读入一个字符序列,按format说明的格式和类型进行转换并存放到对应变量单元。
#include#includevoidmain(void)chars80;
inta;
FILE*fp;
if(fp=fopen(“text.txt”,“r”)=NULL)printf(“cannotopenfile“);
fscanf(fp,“%s%d“,s,chp8ex2,打开文件,输入数据。
例:
从text.txt中读字符串和一个十进制数,输出到显示器。
fp文件指针;
format,格式说明字符串,取%d、%x、%f、%c等;
说明输出转化的格式。
arg1argn,输出量列表。
fprintf(fp,format,arg1,argn);
含义:
以指定的格式(format),将arg1argn的值,转换为字符序列,写入fp文件的当前位置。
fp=fopen(“s.dat”,”w”);
fprint(fp,”%d%c”,123,c);
fclose(fp);
格式化输出函数fprintf,文件的数据块输入输出函数,buf(空类型指针)接收数据的地址;
size(整型)一次读取数据的字节数;
count(整型)读取次数;
fp对应输入文件的文件指针。
fread()函数,使用方法:
fread(buf,size,count,fp);
从fp指向的文件的当前位置,每次读取size个字节,共读count次读入数据,存放到buf指向的内存处。
调用正确,返回输入的项数;
调用错误,返回-1(EOF)。
charstr80;
fp=fopen(“s.dat”,”r”);
fread(str,20,3,fp);
fwrite函数,buf(空类型指针)数据的地址;
size(整型)一次输出数据的字节数;
count(整型)输出次数;
fp对应输出文件的文件指针。
fwrite(buf,size,count,fp);
从buf开始,分count次,每次size个字节,向fp对应文件的当前位置写数据。
调用正确时,返回count。
调用错误时,返回-1(EOF)。
#include#includevoidmain(void)FILE*stream;
charmsg=“Thisisatest“,buf20;
stream=fopen(TEST1.DAT,w+);
fwrite(msg,strlen(msg)+1,1,stream);
fseek(stream,SEEK_SET,0);
fread(buf,strlen(msg)+1,1,stream);
printf(%sn,buf);
fclose(stream);
打开文件。
写数据到文件。
重新定位到文件头。
chp8ex3,8.5文件的定位操作,以上的所有文件的读写都是顺序的,完成一次读写操作后,文件的记录位置自动指向下一位置,因而称为顺序的流式文件。
用户想使用任意的读写位置,可以通过定位函数实现。
取文件当前位置ftell函数,longn;
n=ftell(fp);
取文件的当前的读写位置(从文件头到当前的字节数)。
返回值(long):
调用正确,返回当前位置域文件都相差的字节数;
调用错误,返回-1L。
改变文件指针的当前位置fseek函数,fp文件指针;
offset(longint),以from为起点移动的偏移量;
from为移动的起始位置。
使用方法:
fseek(fp,offset,from);
from在stdio.h中定义了如下常量:
fseek(fp,50L,SEEK_SET),fp对应文件的当前位置移到文件头50字节处。
置文件于开头位置rewind()函数,使用方法:
rewind(fp);
#include#include#defineN30structstudentcharname10;
intno;
intscore;
studN;
voidmain(void)inti;
fp=fopen(“std.lst”,“rb”);
for(i=0;
iN;
i+)fseek(fp,i*sizeof(structstudent),0);
fread(,举例:
已知30个学生的一门课的分数,打印学号为单号学生的分数。
8.6文件的错误检测,文件读写错误检测函数ferror。
ferror(fp);
检测文件读写错误。
如果返回值为0,表示无错误。
如果返回值非0,表示有错误。
该标志一旦置位,必须通过清除函数清除!
清除文件错误标志函数clearerr,使用方法:
clearerr(fp);
清除文件读写错误标志。
#includevoidmain(void)FILE*stream;
stream=fopen(DUMMY.FIL,w);
(void)getc(stream);
if(ferror(stream)printf(ErrorreadingfromDUMMY.FILn);
clearerr(stream);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 文件