C语言文件操作.ppt

上传人:b****1 文档编号:1368863 上传时间:2022-10-21 格式:PPT 页数:60 大小:3.82MB
下载 相关 举报
C语言文件操作.ppt_第1页
第1页 / 共60页
C语言文件操作.ppt_第2页
第2页 / 共60页
C语言文件操作.ppt_第3页
第3页 / 共60页
C语言文件操作.ppt_第4页
第4页 / 共60页
C语言文件操作.ppt_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

C语言文件操作.ppt

《C语言文件操作.ppt》由会员分享,可在线阅读,更多相关《C语言文件操作.ppt(60页珍藏版)》请在冰豆网上搜索。

C语言文件操作.ppt

1,第八章文件,文件系统概述标准文件操作,2,、文件,文件是存储在外部存储介质上的信息的集合。

每个文件有唯一的文件名(主名.后缀)来标识。

计算机实现按名对文件进行读、写等有关操作。

广义上,操作系统将每一个与主机相联的输入输出设备都看作是文件。

(显示器、打印机是输出文件,键盘是输入文件)。

一、文件定义与分类,文件系统概述,3,2、文件的分类,

(1)按存储介质:

磁盘文件、磁带文件。

(2)按文件的内容:

(从程序设计的角度看)源程序、目标文件、可执行文件、数据文件。

(3)按文件的编码方式(存储形式):

文本文件、二进制文件。

4,二、数据文件的存储形式,1、字符文件(文本文件):

每个字符用一个ASCII码存储(即一个字符占一个字节)。

2、二进制文件:

以数据在内存中的形式原样存于磁盘。

如:

一个短整数(short型),其二进制文件存储方式都是占个字节;而字符文件存储方式所占字节数该数的数字个数。

int型数二进制文件字符文件126字节字节1268字节字节,5,例如:

整数1268,文本文件形式,1的ASCII码,00110001,00110010,00110110,00111000,二进制文件形式,00000100,11110100,1268的二进制数,2的ASCII码,6的ASCII码,8的ASCII码,6,三.标准文件系统、非标准文件系统,程序数据区,输出文件缓冲区,输入,输入文件缓冲区,输出,输入,磁盘,内存,非标准文件系统:

不使用缓冲区的磁盘文件系统,标准c采用缓冲文件系统,其原理图如下:

输出,7,4.文件存取方式,在C语言中,文件的存取有两种方式:

(2)随机存取,

(1)顺序存取,8,标准文件操作,一、标准文件类型指针,每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息。

这些信息是保存在一个结构体类型的变量中。

该结构体类型是由系统定义的,取名为FILE。

1.文件类型指针概述,9,typedefstructshortlevel;unsignedflags;charfd;unsignedcharhild;shortbsize;unsignedchar*buffer;unsignedistemp;shorttoken;FILE;,FILE:

一个标准的标识符,但不是关键字,10,如FILE*fp;fp是一个指向FILE类型结构体的指针变量,通过该结构体变量中的文件信息能够访问该文件。

如果有N个文件,一般应设N个指针变量,使它们分别指向N个文件(确切地说,指向该文件的信息结构体),以实现对文件的访问。

FILE*指针变量标识符;,2.文件型指针变量的定义,11,标准文件操作的四个基本步骤:

1.文件类型指针的定义,2.打开标准文件,3.标准文件的读或写的操作,4.标准文件的关闭操作,12,打开文件,对文件进行读或写,关闭文件,文件的操作步骤,文件打开函数,文件读写函数,文件关闭函数,定义文件类型指针,指针定义,13,二.标准文件的打开,打开文件的含义,将文件信息从磁盘装入计算机内存,建立文件的各种有关信息,并使文件指针指向该文件,即建立文件类型指针与文件名之间的关联.,2.文件的打开函数:

fopen,fp=fopen(文件名,使用文件方式);,函数原型:

FILE*fopen(char*filename,char*mode);,14,FILE类型指针-成功NULL-失败,fopen()函数的返回值应赋给一个FILE指针变量,否则,此函数的返回值就会丢失,导致无法对此文件进行操作。

例如:

FILE*fp;fp=fopen(”A1”,”r”);以上语句表示:

要打开名字为A1的文件,使用文件的方式为“读入”,fp指向A1文件。

返回值:

15,文件打开函数的调用给编译系统的三个信息:

1.需要打开的文件名;2.使用文件的操作方式;3.让哪一个指针变量指向被打开的文件。

16,”r”(只读)为输入打开一个文本文件”w”(只写)为输出打开一个文本文件”a”(追加)向文本文件尾增加数据”rb”(只读)为输入打开一个二进制文件”wb”(只写)为输出打开一个二进制文件”ab”(追加)向二进制文件尾增加数据,3.C语言文件操作方式,r:

read,w:

write,a:

append,b:

binary,+:

读写,17,”r+”(读写)为读/写打开一个文本文件”w+”(读写)为读/写建立一个新的文本文件”a+”(读写)为读/写打开一个文本文件”rb+”(读写)为读/写打开一个二进制文件”wb+”(读写)为读/写建立一个新的二进制文件”ab+”(读写)为读/写打开一个二进制文件,C语言文件操作方式(续),r:

read,w:

write,a:

append,b:

binary,+:

读写,18,

(1)用”r”方式打开的文件只能用于向计算机输入数据,而且该文件应该已经存在;,4.标准文件操作方式的说明(1-5),

(2)用”w”方式打开的文件只能用于向该文件写数据,而不能用来向计算机输入。

如果不存在该文件,则在打开时建立一个。

如果存在该文件,则新写入的数据将覆盖掉以前的数据。

(3)如果希望向文件末尾添加新的数据(不希望删除原有数据),则应该用”a”方式打开。

19,(4)用”r+”、”w+”、”a+”方式打开的文件可以用来输入和输出数据。

(5)在程序开始运行时,系统自动打开三个标准文件:

标准输入(stdin)、标准输出(stdout)、标准出错输出(stderr)。

4.标准文件操作方式的说明(1-5),20,例:

打开C盘根下的myfile.c文件,验证文件能否正确打开.,#includevoidmain()FILE*fa;if(fa=fopen(”c:

myfile.c”,”r”)=NULL)printf(“nCannotopenthefile!

”);exit(0);/*退出*/elseprintf(”nOpen!

”);,?

提示:

1.该文件在磁盘上不存在/存在时,比较运行结果。

2.将程序中的”r”改为”w”,当该文件在磁盘上不存在/存在时,比较运行结果。

21,三.标准文件的关闭函数:

fclose,关闭文件指针fp所指的文件,释放相应的文件信息区.正常关闭文件时,函数返回值为0.,函数原型:

intfclose(FILE*fp);,功能:

在使用完一个文件后应该关闭它,以防止它再被误用。

22,函数原型:

四标准文件读写函数,1.读文件字符函数:

fgetc,fp是指向所读文件指针变量,intfgetc(FILE*fp);,函数功能:

从文件指针fp指向的文件当前位置(位置指针)读出一个字符,然后文件位置指针自动后移,指向文件中的下一个字符,返回值为读入的字符.若遇到文件结束符,则返回结束符EOF(-1).,例:

ch=fgetc(fp);,23,例:

将磁盘文件”mydata.txt”的信息读出并显示到屏幕上.(假设文件已经存在,若不存在,可以用记事本或其它文本编辑器编辑一个),#includevoidmain()FILE*fp;charc;if(fp=fopen(”mydata.txt”,”r”)=NULL)printf(“nFilenotexist!

”);exit(0);while(c=fgetc(fp)!

=EOF)putchar(c);fclose(fp);,24,例11.3编写一个程序,实现DOS中的type命令的功能.,#includevoidmain(intargc,char*argv)FILE*fp;charc;if(argc2)printf(”nNOfilename”);exit(0);if(fp=fopen(”mydata.txt”,”r”)=NULL)printf(”nFilenotexist!

”);exit(0);while(c=fgetc(fp)!

=EOF)putchar(c);fclose(fp);,25,2.文件写入字符函数:

fputc,函数返回值:

输出成功,返回值就是输出的字符;输出失败,返回一个EOF(值为-1)。

功能:

把一个字符ch写到fp指向的磁盘文件上去。

函数原型:

intfputc(intch,FILE*fp);,例:

FILE*fp;charch=A;fputc(ch,fp),26,putchar函数就是从fputc函数派生出来的。

putchar(c)是用#define定义的宏:

#defineputchar(c)fputc(c,stdout),同理,getchar函数是从fgetc函数派生出来的。

getchar(c)是用#define定义的宏:

#definegetchar(c)fgetc(stdin),注,27,例11.4从键盘输入一些字符存到一个磁盘文件data.dat中,以“#”结束。

#includevoidmain()FILE*fp;charc;if(fp=fopen(”data.dat”,”w”)=NULL)printf(”nFilecannotopen!

”);exit(0);while(c=getchar()!

=”#”)fputc(c,fp);fclose(fp);,28,例11.5将文件filea.dat的内容复制到文件fileb.dat中。

#includevoidmain()FILE*f1,*f2;if(f1=fopen(”filea.dat”,”r”)=NULL)printf(”nFilecannotopen!

”);exit(0);if(f2=fopen(”fileb.dat”,”w”)=NULL)printf(”nFilecannotcreat!

”);exit(0);while(c=fgetc(f1)!

=EOF)fputc(c,f2);fclose(f1);fclose(f2);,29,3.读文件字符串函数:

fgets,从指针fp指向的文件中读取len1个字符,把它送到由指针buf指向的字符数组中。

char*fgets(char*buf,intlen,FILE*fp);,函数原型:

函数功能:

字符数组的长度应大于len,可存放len-1个字符,字符数组的最后一个元素为0.,若在读入len-1个字符前遇到换行符n或文件结束符号EOF,立即结束读入操作.,30,例11.6利用函数fgets,将文本文件filea.txt中的内容全部读出并显示在屏幕上。

分析:

(1)一般地,文本文件以行为单位,每行最多80个字符,再加上一个行结束符号即换行符n,则每行至少需要81个字节的存储空间。

(2)使用函数fgets读取字符串时,若在读入len-1个字符完成之前遇到换行符n或文件结束符号EOF,立即结束读入操作。

无论读入的字符是否等于或小于len-1个,函数为读入的字符串之后加一个0。

因此,读入的字符(包括0)只有len个。

(3)定义文件指针。

(4)以只读方式打开文件。

(5)当文件未结束时,反复读出字符串并输出。

(6)关闭文件。

31,#includevoidmain()FILE*fp;charstr81;if(fp=fopen(”aa.txt”,”rt”)=NULL)printf(”Cannotopenfile!

”);getchar();exit

(1);while(fgets(str,81,fp)!

=NULL)puts(str);fclose(fp);,例:

利用函数fgets,将文本文件filea.txt中的内容全部读出并显示在屏幕上。

32,4.将字符串写入文件的函数:

fputs(),char*fputs(char*buf,FILE*fp);,把由指针buf指向的字符数组中的字符串写入由指针fp指向的文件中。

buf:

字符串常量,字符数组名,指针变量,函数原型:

函数功能:

#includevoidmain()FILE*fp;charbuf81;if(fp=fopen(”data.txt”,”a”)=NULL)print

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1