【经管类】C文件概述

上传人:Jerm****014 文档编号:50177069 上传时间:2018-08-07 格式:PPT 页数:40 大小:870.50KB
返回 下载 相关 举报
【经管类】C文件概述_第1页
第1页 / 共40页
【经管类】C文件概述_第2页
第2页 / 共40页
【经管类】C文件概述_第3页
第3页 / 共40页
【经管类】C文件概述_第4页
第4页 / 共40页
【经管类】C文件概述_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《【经管类】C文件概述》由会员分享,可在线阅读,更多相关《【经管类】C文件概述(40页珍藏版)》请在金锄头文库上搜索。

1、第11章 文件11.1 C文件概述v文件与文件名文件是指存放在外部存储介质上的数据集合。 为标识一个文件,每个文件都必须有一个文件名,其一般结构为:主文件名.扩展名 v根据文件的存储形式,可分为ASCII码文件和二 进制文件 v读文件与写文件读文件是将磁盘文件中的数据传送到计算机内存的操作 。写文件是从计算机内存向磁盘文件中传送数据的操作。v构成文件的基本单元与流式文件 语言将文件看作是由一个一个的字符(ASCII码文件)或 字节(二进制文件)组成的。这种文件称为流式文件。 vANSI C的缓冲文件系统缓冲文件系统是指,系统自动地在内存区为每个正在使 用的文件开辟一个缓冲区。写文件时,必须首先

2、输出到缓冲区中。待缓冲区装满后 ,再一起输出到磁盘文件中。读文件时,则正好相反:首先将一批数据读入到缓冲区 中,再从缓冲区中将数据逐个送到程序数据区。11.2 文件的类型及其文件的指针每个被使用的文件都在内存中开辟一个区,用来存放文件的有 关信息(文件名、文件状态、文件的当前位置等),这些信息 是保存在一个结构体变量中的。typedef struct short level; /* 缓冲区“满”或“空”的程度 */unsigned flags; /* 文件状态标志*/char fd; /* 文件描述符 */unsigned char hold; /* 如无缓冲区不读取字符 */short bs

3、ize; /* 缓冲区大小*/unsigned char *buffer; /* 缓冲区的位置 */unsigned char *curp; /* 指针,当前的指向 */unsigned istemp; /* 临时文件,指示器 */short token; /* 用于有效性检查 */ FILE; FILE f5;FILE *fp;11.3 常用的文件函数对文件进行操作之前,必须先打开该文件; 使用结束后,应立即关闭,以免数据丢失。 使用文件函数必须#include“stdio.h“一.文件的打开fopen()函数v 用法: FILE *fp;fpfopen(“文件名“,“操作方式“);v功能:

4、返回一个指向指定文件的指针。v说明:(1)“文件名”是指要打开(或创建)的文件名。如果使用字符 数组(或字符指针),则不使用双引号,直接写数组名或字符指针 名。11.3.1 文件打开与关闭“r+/rb+” (读写)“a/ab” (追加)“w/wb” (只写)“r/rb” (只读)“w+/wb+” (读写)“a+/ab+” (读写)为输入打开一个文本/二进制文件为输出打开或建立一个文本/二进制文件为读/写打开一个文本/二进制文件为读/写建立一个文本/二进制文件为读/写打开或建立一个文本/二进制文件向文本/二进制文件尾追加数据文件使用方式含义(2)“操作方式”如见书222页表111所示。(3)“r

5、(b)+”与“a(b)+”的区别:使用前者打开文件时, 读写位置指针指向文件头;使用后者时,读写指针指向文件 尾。(4)如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针 NULL (其值在头文件stdio.h中被定义为0)。为增强程序的可靠性,常用下面的方法打开一个文件:FILE *fp; if(fp=fopen(“文件名“,“操作方式“)=NULL) printf(“can not open this filen“); exit(0); (5)在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指 针:标准输入文件stdin:指向终端输入(一般为键盘)。如果程序中

6、指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。标准输出文件stdout:指向终端输出(一般为显示器)。标准错误文件stderr:指向标准错误输出(一般为显示器)。 关闭已打开的所有文件,结束程序运行 0表示正常退出,非0表示程序出错退出例 文件打开与测试 FILE *fp;fp=fopen(“aa.c”,“w”);if(fp=NULL) printf(“File open error!n”);exit(0);例 FILE *fp;fp= fopen (“c:fengyibkctest.dat”,”r”); 例 FILE *fp;char *filename=“c:fengyi

7、bkctest.dat”fp= fopen(filename,”r”); 二. 文件的关闭fcolse函数 v 函数原型: int fclose(FILE *文件指针); v 用法:fclose(文件指针变量名) v 功能:关闭“文件指针”所指向的文件。如果正常关闭 了文件,则函数返回值为;否则,返回值为非。例如:FILE *fp;fp=fopen(“data.c“,“r“); fclose(fp);/*关闭fp所指向的文件*/11.3.2 文件的读写文件打开之后,就可以对它进行读与写的操作了 文件中有一个读写位置指针,指向当前的读写位置。每次读写1个(或1 组)数据后,系统自动将位置指针移动

8、到下一个读写位置上。 一. 文件的字符读写1.将一个字符写到文件中fputc()函数v函数原型:int fputc(char c, FILE *stream);v用法:fputc(字符数据,文件指针);其中“字符数据”,既可以是字符常量,也可以是字符变量。v功能:将字符数据输出到“文件指针”所指向的文件中去,同时将读写位 置指针向前移动1个字节(即指向下一个写入位置)。v返回值:输出成功,则返回值是输出的字符数据;否则,返回一个符号 常量EOF(其值在头文件stdio.h中,被定义为-1)。例如:fputc(ch,fp);将字符(ch的值)输出到fp所指向的文件中去。 2.从文件中读一个字符f

9、getc()函数v函数原型:int fputc( FILE *stream);v用法: fgetc(文件指针); v功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置 指针向前移动1个字节(即指向下一个字符)。v返回值:如果在读字符时遇到文件结束符,函数返回一个文件结束标志 EOF(即-1),否则返回所读的字符。例如,chfgetc(fp) ;v对二进制文件执行读入操作时,必须使用库函数feof()来判断是否遇到文 件尾。如果遇到文件尾,feof返回1;否则,则返回0。 while(!feof(fp)c=fgetc(fp); #include main() FILE *fp;ch

10、ar ch,*filename=“out.txt”;if(fp=fopen(filename,“w“)=NULL) printf(“cannot open filen“); exit(0);printf(“Please input string:“);ch=getchar();while(ch!=#) fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp); #include main() FILE *fp;char ch,*filename=“out.txt”;if(fp=fopen(filename,”r“)=NULL) printf(“canno

11、t open filen“);exit(0);while(ch=fgetc(fp)!=EOF)putchar(ch);fclose(fp); 例 从键盘输入字符,逐个存到磁盘文件中,直到输入#“为止例 读文本文件内容,并显示判断文本文件是否结束判断二进制文件是否结束while(!feof(fp) c=fgetc(fp);#include main() FILE *in, *out;char ch,infile10,outfile10;scanf(“%s“,infile);scanf(“%s“,outfile);if (in = fopen(infile, “r“)= NULL) printf(

12、“Cannot open infile.n“);exit(0);if (out = fopen(outfile, “w“)= NULL) printf(“Cannot open outfile.n“);exit(0);while (!feof(in)fputc(fgetc(in), out);fclose(in); fclose(out); 例 文件拷贝lfeof函数原型: int feof(FILE *fp)功能:判断文件是否结束返值:文件结束,返回真(非0);文 件未结束,返回0二. 文件的字符串读写 fgets()和fputs()函数 1.库函数fputs()向指定文件输出一个字符串 v

13、用法:fputs(字符串,文件指针); v“字符串”可以是一个字符串常量,或字符数组名,或字符 指针变量名 v功能:向指定文件输出一个字符串,同时将读写位置指针向 前移动(字符串长度)个字节。如果输出成功,则函数返回值 为;否则,为非值2.库函数fgets()从文件中读一个字符串 v用法:fgets(指针,串长度+1,文件指针); v功能:从指定文件中读入一个字符串,存入“字符数组指 针”中,并在尾端自动加一个结束标志0;同时,将读写位 置指针向前移动(字符串长度)1个字节。如果在读入规定长度之前遇到文件尾EOF或换行符,读入即结束。11.3.2 文件的读写fputs(“china“,fp);

14、fgets(str,n+1,fp);例 从键盘读入字符串存入文件,再从文件读回显示 #include main() FILE *fp;char string81;if(fp=fopen(“file.txt“,“w“)=NULL) printf(“cannt open file“);exit(0); while(strlen(gets(string)0) fputs(string,fp);fputs(“n“,fp);fclose(fp);if(fp=fopen(“file.txt“,“r“)=NULL) printf(“cannt open file“);exit(0); while(fgets

15、(string,81,fp)!=NULL)fputs(string,stdout);fclose(fp); 三. 读写文件中的一个数据块 实际应用中,常常要求1次读写1个数据块(一个实数或一个结构体变量的值)。 fread( ) 和fwrite()函数。 v用法:fread(buffer,size, count,fp);fwrite(buffer,size, count,fp); v功能: fread()从fp所指向文件的当前位置开始,一次读入size个字节,重 复count次,并将读入的数据存放到从buffer开始的内存中;同时,将读写位置指针向前移动size* count个字节。buffer是存放读入数据的起始 地址(即存放何处)fwrite()从buffer开始,一次输出size个字节,重复count次, 并 将输出的数据存放到fp所指向的文件中;同时,将读写位置指针向前移 动size* count个字节。其中,buffer是要输出数据在内存中的起

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号