
第十三章文件: 掌握文件、缓冲文件系统和文件指针的概念,学会使用文件的打开、关闭、读写等文件操作功能. 第13.1节C文件概述I.文件概念文件: 指存储在外部媒体上的数据的收集. 操作系统按文件管理数据. 连接到主机的每个输入或输出设备都被视为一个文件. 2、 文件和分类文件的存在形式: 文件名+文件内容. 文件内容: 是一个字符(字节)序列,即一个字符(字节)数据序列. 对文件的访问基于字符(字节),称为流文件. 文件分类: 根据存储器中数据的不同组织形式,可分为两种类型的文件: ASCII文件(文本文件)⑴ASCII二进制输入系统(文本文件): 在文件的每个字节输入一个ASCII码,表示一个字符. (2) 二进制文件: 将内存中的数据输出到存储在内存中的文件中. 根据数据读写方式的不同,它可以分为两种类型: 顺序存取文件随机存取文件3. 文件(1)打开文件的基本操作: 从磁盘(2)读取文件名等目录信息,进入内存并存储在结构中. (2) 关闭文件: 将内存结构中的文件名等目录信息写入磁盘. (3) 写入文件: 将内容写入文件. (4) 读取文件: 从文件中读取

4、 文件C语言的输入输出方式分为: 非缓冲文件系统缓冲文件系统⑴非缓冲文件系统: 程序与外设直接交换数据. 特点: 每次读写时启动外设. (2) 缓冲文件系统: 程序和外设通过内存缓冲区交换数据. 特点: 只有当内存缓冲区满(写盘)或空(读盘)时,外设才能启动. 程序数据区输出文件缓冲区输入文件缓冲区磁盘???13.2 C文件类型指针I.文件类型(文件)每个使用的文件在内存中都有一个区域,用于存储文件的相关信息(如文件名、状态、当前位置等). 此信息存储在结构类型的变量中. 系统将结构类型定义为“文件”. 有些版本的C在stdio中有以下定义. H file:typedef struct{int_fd;;/*文件号.*int_clett;/*缓冲区剩余字符*/int_mode;/*文件操作模式*/char*_nexttc;/*下一个字符位置*/char*_buff;/*文件缓冲区位置*/}文件;2、定义文件类型指针变量的定义方法: file*指针变量名;例如: file*FP;意思是: FP是指向文件类型结构的指针变量

可以使FP指向文件的结构变量,以便可以通过结构变量中的文件信息访问文件. 第13.3节文件打开和关闭功能1. 文件打开函数(fopen函数)(1)调用方法: 自定义文件类型指针变量File*FP;FP=fopen(文件名,文件用法);要打开的文件名. 必须是由双引号引起的字符串常量. 具有特定含义的符号也必须由双引号引起(2)函数: 以指定的方式打开指定的文件,如果操作成功,则返回指向该文件的指针;如果打开文件时出错,则返回空指针. 例如: file*FP;FP=fopen(“stu. Dat,“R”);⑶文件使用?基本模式字符(仅用于文本文件): R仅打开用于读取. (只读)w打开只写. (创建新文件)a仅为添加打开. (写入旧文件)?二进制文件读写(基本模式字符+“B”): 辅助: 帮助说明,二进制文件读写. 例如: FP=(“stu. 数据“,”RB“);?同时读写文件(基本模式字符+[“B”]+”)+“+辅助说明. 你可以同时读和写文件. 例如: FP=(“stu. Datfwrite rb,“R+”);⑶如何使用文件?基本模式字符(仅用于文本文件): R仅打开用于读取

(只读)w打开只写. (创建新文件)a仅为添加打开. (写入旧文件)?二进制文件读写(基本模式字符+“B”): 辅助: 帮助说明,二进制文件读写. 例如: FP=(“stu. 数据“,”RB“);?同时读写文件(基本模式字符+[“B”]+”)+“+辅助说明. 你可以同时读和写文件. 例如: FP=(“stu. Dat,“R+”);⑶如何使用文件?基本模式字符(仅用于文本文件): R仅打开用于读取. (只读)w打开只写. (创建新文件)a仅为添加打开. (写入旧文件)?二进制文件读写(基本模式字符+“B”): 辅助: 帮助说明,二进制文件读写. 例如: FP=(“stu. 数据“,”RB“);?同时读写文件(基本模式字符+[“B”]+”)+“+辅助说明. 你可以同时读和写文件. 例如: FP=(“stu. Dat,“R+”;例如: include<;stdio的函数. 如果((FP=fopen(“stu”),H>;main(){file*FP;通常使用此方法打开文件. Dat“,”R”))==null){printf(“找不到文件”);exit(0);}exit是关闭所有文件并终止程序
Elseexit(0)是{printf(“文件打开正常!”)正常终止的结果;Fclose(FP);}}}程序: 如果磁盘上存在stu.dat文件,请打开文件“确定”!将显示在屏幕上,否则将在屏幕上显示未找到的文件. 2、 文件关闭函数(Fclose函数)(1)调用方法: Fclose(文件指针);⑵函数: 关闭文件指针指定的文件,将缓冲区中的数据(未填充缓冲区的数据)输出到磁盘,释放文件指针. 例如: file*FP;FP=fopen(“输出. Dat“,”R+“/*读写*/Fclose(FP);注意: fopen和Fclose函数总是成对的. 如果没有Fclose函数,某些数据将丢失!2. fgetc函数的一般调用形式: character variable=fgetc(文件指针);函数: 从文件指针指示的文件中读取一个字符,并将其赋给指定的字符变量. 如果是文件结束字符,则返回文件结束标志EOF(-1). 例如: ch=fgetc(FP);其中ch是字符变量,FP是文件指针. 含义: 从FP指向的文件中读取一个字符,并将其赋给字符变量ch
示例: 读取过程. #N“,count;Fclose(FP);}如果file.txt的内容是: abcd1234 abcd duo ji输出结果: 12检测函数调用是否成功有两种方法: 1. 由函数的返回值决定;2. 使用文件状态检测函数feof、feror、fclearr feof(FP): 测试FP指向的文件位置是否是文件的结尾. 如果已到达文件结尾,则函数返回一个非零值,否则返回0. 公共程序段: while(!Feof(FP)feror(FP): 测试FP指向的文件上的操作是否有错误
如果有错误,函数返回一个非零值,否则返回0. fclearr(FP): 将函数feror和feof的值设置为0. 2、 free函数和fwrite函数的一般调用形式是: free(buffer,size,count,FP);其中fwrite(buffer,size,count,FP);buffer:是指针. (是起始地址). 对于freed,它是存储读入数据的地址. 对于fwritefwrite rb,它是输出数据的地址. 大小: 要读写的字节数. Count: 要读取和写入的数据项的大小字节数. 函数: 将缓冲区指示的大小*计数字节数据读写到FP指示的文件中. 例如: FREAD(F,4,2,FP);(其中F是真正的数组名)示例1将数组a写入文件FA;然后从FA读取数组B. #f(“%6d”,b[i]);fclose(fp);}4、 Fputs函数和fgets函数是两个读取和写入字符串文件的函数
一. fputs函数的一般调用形式: fputs(字符串,文件指针);函数: 将字符串输出到指定的文件. 例如: fputs(STR,FP);(其中STR是字符数组名)表示: 将STR中的字符串输出到FP指向的文件. 2. 函数调用形式: Fgets(字符串,字符串长度,文件指针);函数: 从指定文件中读取字符串. 例如: fgets(STR,N,FP);(STR是字符数组名)意思是: 从FP指向的文件中读取长度为N-1的字符串,最后在字符数组STR中添加一个“\0”. Fprintf函数和fscanf函数是两个用于读写文件的函数. 一般调用形式: fprintf(文件指针、格式字符串、输出表列);fscanf(文件指针、格式字符串、输入表列);函数: 按指定格式将数据写入指定文件. 或者以指定文件的格式输入数据. 例如: fprintf(FP,”%D,%6.2F“,I,x);例如: fscanf(FP,”%D,%F“,&I,&x);函数: 将文件的读写位置指针移到指定位置. 例如: fseek(FP,128L,seek_set);将位置指针移到距离文件头128字节的位置
例如: fseek(FP,-10L,2);将位置指针从文件末尾向后退10个字节. 注意: fseek函数通常用于二进制文件. 三. fTell函数的一般调用形式: fTell(文件指针);函数: 返回文件位置指针的当前值. 例如: POS=fTell(FP);获取指向文件的FP的当前读/写位置,并将其值赋给变量POS. 家庭作业: 1. 编写并运行调试12.4(仅实现循环左移)2. 编写并运行调试13.6 3. 思考问题: 13.1、13.2、13.3 5.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-158111-1.html
美国说什么不对也对
收复台湾用得着出兵