c语言程序设计(王勇)第16章文件-化学_第1页
c语言程序设计(王勇)第16章文件-化学_第2页
c语言程序设计(王勇)第16章文件-化学_第3页
c语言程序设计(王勇)第16章文件-化学_第4页
c语言程序设计(王勇)第16章文件-化学_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 16 章 文件,第一节 C文件概述,一、文件的概念: 存储在外部介质上数据的集合,是操作系统数据管理的单位,二、使用数据文件的目的,1、数据文件的改动不引起程序的改动 程序与数据分离 2、不同程序可以访问同一数据文件中的数据 数据共享 3、能长期保存程序运行的中间数据或结果数据,1. 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成 2. 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 3. 按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个字符的ASCII

2、码 二进制文件:数据按其在内存中的存储形式原样存放,三、文件分类,文本文件特点: 存储量大、速度慢、便于对字符操作,二进制文件特点: 存储量小、速度快、便于存放中间结果,49 48 48 48 48,一、文件结构体FILE,第二节 文件类型指针,二、文件类型指针的定义,格式: FILE *指针变量名; 用法: FILE *fp1, *fp2;,typedef struct int _fd; /文件号 int _cleft; /缓冲区中剩下的字符数 int _mode; /文件操作方式 char *_next; /文件当前读写位置 char *_buff; /文件缓冲区位置 FILE;,C文件操

3、作用库函数实现,包含在stdio.h 文件使用方式:打开文件-文件读/写-关闭文件 系统自动打开和关闭三个标准文件: 标准输入-键盘 stdin 标准输出-显示器 stdout 标准出错输出-显示器 stderr 打开文件fopen 函数原型: FILE *fopen(char *name,char *mode),功能:按指定方式打开文件 返值:正常打开,为指向文件结构体的指针; 打开失败,为NULL,要打开的文件名,使用文件方式,例 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”);

4、 exit(0); ,例 FILE *fp; fp= fopen (“c:fengyibkctest.dat”,”r”);,例 FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”);,第三节 文件的打开,二、功能,第四节 文件的关闭,一、格式,fclose(FILE *fp),关闭fp指向的文件,文件打开时返回的文件类型指针,不关闭文件可能会丢失数据,一、单字符输入与输出,第五节 文件的读写,1. fputc(c, FILE *fp),功能:把一字节代码c写入fp指向的文件中 返值:正常,返回c;出错,为E

5、OF 例: fputc(A, fp),2. fgetc(FILE *fp),功能:从fp指向的文件中读取一字节代码 返值:正常,返回c;出错,为EOF 例: char ch; ch=fgetc(fp);,二、文件结束函数feof,格式: feof(fp),功能:判断指针fp所指向的文件是否到了文件尾 返值:文件结束, 返回真(非0); 文件未结束,返回0,1. 文本文件判断格式,while(ch=fgetc(fp)!=EOF),2. 二进制文件判断格式,while( !feof(fp) ) c=fgetc(fp); . ,第七节 格式化输入输出,格式: fscanf(文件指针, “格式控制串”

6、, 输入项表),功能: 从文件指针所指的文件中按格式读取数据, 存入输入项表中 返值:成功,返回I/O的个数;出错或文件尾,返回EOF,一、fscanf函数,格式: fprintf(文件指针, “格式控制串”, 输出项表,功能: 将输入项表中的数据按格式存入文件指针所指 的文件中 返值:成功,返回I/O的个数;出错,返回EOF,二、fprintf函数,fscanf(fp,“%d,%f”, /若文件中有3,4.5 ,则将3送入i, 4.5送入t,例 fprintf(fp,“%d,%6.2f”,i,t); /将i和t按%d,%6.2f格式输出到fp所指文件,例 从键盘按格式输入数据存到磁盘文件中去

7、,#include main() char s80,c80; int a,b; FILE *fp; if(fp=fopen(test,w)=NULL) puts(cant open file); exit() ; fscanf(stdin,%s%d, s, ,例 从磁盘文件中按格式读入数据放入指定变量,#include main() char c80; int b; FILE *fp; if(fp=fopen(test,r)=NULL) puts(cant open file); exit(); fscanf(fp,“%s%d”,c, ,第八节 字符串输入输出,格式: fgets(地址, n,

8、 文件指针),功能: 从文件指针所指的文件中读取n-1个字符,存入 指定地址开始的存储单元中,返回这个地址,一、fgets函数,格式: fputs(字符串, 文件指针,功能: 将字符串写入文件指针所指的文件中 返值:成功,返回正整数,出错,返回EOF(-1),二、fputs函数,说明: 输出时字符串最后的0并不输出,也不自动加n 形成的文件中字符串首尾相接,为便于阅读,可人为加入n,说明: 1. 若碰到换行符或文件结束标志(EOF),读入结束 该函数最多能读入 n-1 个字符 读入结束,系统会自动在最后加一个0,例 从键盘读入字符串存入文件,#include main() FILE *fp;

9、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); ,例 从文件读出字符串,#include main() FILE *fp; char string81; if(fp=fopen(file.txt,r)=NULL) printf(cannt open file);exit(0); while(fgets(string,81,fp)!=NULL) fp

10、uts(string,stdout); fclose(fp); ,第九节 数据块输入输出函数 fread与fwrite,一、fread函数,例:若有 Struct st char num8; float mk5; pers30;,格式: fread(buffer, size, count,fp);,功能: 从文件中读出 count 个 size大小的数据块, 存入buffer开始的空间中。,i=0; fread(,从fp所指的文件中读取1块大小为sizeof(struct st)的数据块,放入pers0开始的存储空间中,即给pers0中的各个成员赋值,二、fwrite函数,例:若有 Struc

11、t st char num8; float mk5; pers30;,格式: fwrite(buffer, size, count,fp);,功能: 将 从buffer开始的地址中,count 个 size大小 的数据块,写入fp所指的文件中,for (i=0;i30;i+) fwrite(,将结构体数组的所有数据写入fp所指的文件, 每次写入sizeof(struct st)大小的字节,例 float f2; FILE *fp; fp=fopen(“aa.dat”,“rb”); fread(f,4,2,fp);,for(i=0;i2;i+) fread(,其作用是从数据文件中读取数据给数组f赋值,或,fseek函数 函数原型: int fseek(FILE *fp,long offset,int whence) 功能:改变文件位置指针的位置 返值:成功,返回0;失败,返回非0值,文件指针,位移量(以起始点为基点,移动的字节数) 0 向后移动 0 向前移动,起始点 文件开始 SEEK_SET 0 文件当前位置 SEEK_CUR 1 文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论