c语言文件资源,C语言文件操作

C语言文件操作

1第八章 文件v文件系统 概述v标准文件操作2、文件 文件是存储在外部存储介质上的信息的集合。每个文件有唯一的文件名(主名.后缀)来标识。 计算机实现按名对文件进行读、写等有关操作。广义上,操作系统将每一个与主机相联的输入输出 设备都看作是文件。(显示器、打印机是输出文件,键 盘是输入文件)。一、文件定义与分类文件系统 概述32、文件的分类 (1)按存储介质:磁盘文件、磁带文件。(2)按文件的内容:(从程序设计的角度看 )源程序、目标文件、可执行文件、数 据文件。(3)按文件的编码方式(存储形式):文本文件、二进制文件。4二、数据文件的存储形式1、字符文件(文本文件):每个字符用一个 ASCII码存储(即一个字符占一个字节)。 2、二进制文件:以数据在内存中的形式原样存于磁盘。如:一个短整数(short型),其二进制文件存储方式都是占个字节; 而字符文件存储方式所占字节数该数的数字个数。int型数 二进制文件 字符文件126 字节 字节1268 字节 字节5例如:整数1268文本文件形式1的ASCII码00110001 00110010 00110110 00111000二进制文件形式00000100 111101001268的二进制数2的ASCII码 6的ASCII码 8的ASCII码6三.标准文件系统、非标准文件系统程序数据区输出文件缓冲区输入输入文件缓冲区输出输入磁盘 内存非标准文件系统:不使用缓冲区的磁盘文件系统标准c 采用缓冲文件系统,其原理图如下:输出74.文件存取方式在C语言中,文件的存取有两种方式:(2)随机存取(1)顺序存取8标准文件操作一、 标准文件类型指针每个被使用的文件都在内存中开辟一个 区域,用来存放文件的有关信息。这些信息是保存在一个结构体类型的变量 中。该结构体类型是由系统定义的,取名为 FILE。1.文件类型指针概述9typedef struct short level;unsigned flags; char fd; unsigned char hild; short bsize; unsigned char *buffer; unsigned istemp;short token; FILE;FILE: 一个标 准的标 识符, 但不是 关键字10如 FILE *fp;fp是一个指向FILE类型结构体的指针变量 ,通过该结构体变量中的文件信息能够访问该文 件。如果有N个文件,一般应设N个指针变量, 使它们分别指向N个文件(确切地说,指向该 文件的信息结构体),以实现对文件的访问。FILE *指针变量标识符;2. 文件型指针变量的定义11标准文件操作的四个基本步骤:1. 文件类型指针的定义2. 打开标准文件3. 标准文件的读或写的操作4. 标准文件的关闭操作12打开文件对文件进行读或写关闭文件文件的操作步骤文件打开函数文件读写函数文件关闭函数定义文件类型指针指针定义13二. 标准文件的打开1. 打开文件的含义将文件信息从磁盘装入计算机内存,建立文件 的各种有关信息,并使文件指针指向该文件,即建 立文件类型指针与文件名之间的关联.2.文件的打开函数: fopenfp=fopen(文件名,使用文件方式);函数原型:FILE *fopen(char *filename,char *mode);14FILE类型指针-成功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文件,验证文件能否 正确打开. #include void main() FILE *fa;if(fa=fopen(”c:myfile.c”,”r”)=NULL) printf(“n Cannot open the file!”);exit(0); /*退出*/else printf(” n Open! ”);?提示:1. 该文件在磁盘上不存在/存 在时,比较运行结果。2. 将程序中的”r”改为”w” , 当该文件在磁盘上不存在/存 在时,比较运行结果。21三. 标准文件的关闭函数: fclose关闭文件指针fp所指的文件,释放相应的文件 信息区. 正常关闭文件时,函数返回值为0. 函数原型: int fclose(FILE *fp);功能:在使用完一个文件后应该关闭它,以防止它 再被误用。22函数原型:四 标准文件读写函数1. 读文件字符函数:fgetcfp是指向所读 文件指针变量int fgetc(FILE *fp) ;函数功能:从文件指针fp指向的文件当前位置(位置指 针)读出一个字符,然后文件位置指针自动后移, 指向文件中的下一个字符,返回值为读入的字符 .若遇到文件结束符,则返回结束符EOF(-1). 例: ch=fgetc(fp);23例: 将磁盘文件”mydata.txt”的信息读出并显 示到屏幕上.(假设文件已经存在,若不存在,可以 用记事本或其它文本编辑器编辑一个)#include void main() FILE *fp; char c; if (fp=fopen( ”mydata.txt” , ”r” )=NULL) printf(“n File notexist!”);exit(0); while(c=fgetc(fp)!=EOF)putchar( c );fclose(fp);24例11.3 编写一个程序,实现DOS中的type命令的功能 .#include void main(int argc,char *argv) FILE *fp; char c; if (argc void main() FILE *fp; char c; if (fp=fopen( ”data.dat” , ”w” )=NULL) printf(” n File cannot open! ”);exit(0); while(c=getchar( )!=”#” )fputc ( c,fp );fclose(fp);28例11.5 将文件filea.dat的内容复制到文件 fileb.dat中。 #include void main() FILE *f1,*f2; if (f1=fopen( ”filea.dat” , ”r” )=NULL) printf(” n File cannot open! ”);exit(0); if (f2=fopen( ”fileb.dat” , ”w” )=NULL) printf(” n File cannot creat! ”);exit(0); while(c=fgetc(f1 )!=EOF )fputc ( c,f2 );fclose(f1); fclose(f2);293. 读文件字符串函数:fgets从指针 fp指向的文件中读取 len 1 个字符, 把它送到由指针buf 指向的字符数组中。char * fgets ( char * buf , int len , 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#include vo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值