C语言程序设计 第十三章 文件.

Slides:



Advertisements
Similar presentations
首 页 首 页 上一页 下一页 本讲内容 投影法概述三视图形成及其投影规律平面立体三视图、尺寸标注 本讲内容 复习: P25~P31 、 P84~P85 作业: P7, P8, P14[2-32(2) A3 (1:1)]
Advertisements

第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
概率统计( ZYH ) 节目录 3.1 二维随机变量的概率分布 3.2 边缘分布 3.4 随机变量的独立性 第三章 随机向量及其分布 3.3 条件分布.
基本知识和几何要素的投影 模块一: 字体练习 第一章 制图的基本知识与基本技能 题目提示返回.
第 12 章位运算 C 语言兼具高级语言及低级语言的特性,因此 适合编写系统软件。 C 语言具备低级语言的特性 就在于它能直接对硬件进行操作,即位运算。 所谓位运算是指,按二进制位进行的运算。 例如,将一个存储单元中各二进位左移或右移一 位等。
第四章 犯罪概念与犯罪构成. 第一节 犯罪概念 一、犯罪概念的类型  (一)犯罪的形式概念  (二)犯罪的实质概念  (三)犯罪的混合概念.
本幻灯为医用耗材集中询价采购网上操作说明,请参考收费说明、供应厂商流程等文件 综合学习。幻灯次序按操作次序进行,可配合自身用户名对照学习。 操作人员:所有类别 操作说明:所有标 new 标志的文件,务必仔细查看。原有用户名和信息均可继续使用,新 使用人员可点击注册申请使用.
计算机 在分析化学的应用 ( 简介 ) 陈辉宏. 一. 概述 信息时代的来临, 各门学科的研究方法都 有了新的发展. 计算机的介入, 为分析化学的进展提供了 一种更方便的研究方法.
编译程序 构造原理和实现技术 授课教师:吕江花. 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径.
主要内容  LR(0) 分析. 0 S→  E # E→  E+T E→  T T→  id T→  ( E ) 1 S→E  # E→E  +T 5 T→id  3 E→E+  T T→  id T→  (E) 4 E→E+T  9 E→T  6 T→(  E) E→
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
系统调用 Embedded Operating Systems2 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提 供了一组接口 —— 系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
1 为了更好的揭示随机现象的规律性并 利用数学工具描述其规律, 有必要引入随 机变量来描述随机试验的不同结果 例 电话总机某段时间内接到的电话次数, 可用一个变量 X 来描述 例 检测一件产品可能出现的两个结果, 也可以用一个变量来描述 第五章 随机变量及其分布函数.
计算机文化基础 第 13 章 多表操作. 多表操作 以前所进行的操作中,在同一时刻只能打开一个表文 件,这是单工作区操作。但是在有些情况下,我们需要同时 了解多个表文件中的内容,例如 图 8-1 。在表文件 Stud1.DBF 中,有姓名,班级,电话三项;在 Stud2.DBF 中, 有姓名,性别,籍贯,英语四个字段。在单工作区操作方式.
第 10 章 数据表的基本操作 计算机文化基础. 第一节 表结构显示与修改 1 、显示表的结构 格式: LIST/DISPLAY STRUCTURE [TO PRINT] 功能:显示(打印)当前已打开的数据库文件结构 说明:首先必须打开库文件。 LIST 是连续显示全部内容; DISPLAY 是分屏显示.
主讲教师:陈殿友 总课时: 124 第八讲 函数的极限. 第一章 机动 目录 上页 下页 返回 结束 § 3 函数的极限 在上一节我们学习数列的极限,数列 {x n } 可看作自变量 为 n 的函数: x n =f(n),n ∈ N +, 所以,数列 {x n } 的极限为 a, 就是 当自变量 n.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第三十八讲 ) 离散数学. 第八章 格与布尔代数 §8.1 引 言 在第一章中我们介绍了关于集 合的理论。如果将 ρ ( S )看做 是集合 S 的所有子集组成的集合, 于是, ρ ( S )中两个集合的并 集 A ∪ B ,两个集合的交集.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第四十八讲 ) 离散数学. 例 设 S 是一个非空集合, ρ ( s )是 S 的幂集合。 不难证明 :(ρ(S),∩, ∪,ˉ, ,S) 是一个布尔代数。 其中: A∩B 表示 A , B 的交集; A ∪ B 表示 A ,
第十一章 曲线回归 第一节 曲线的类型与特点 第二节 曲线方程的配置 第三节 多项式回归.
第 11 章 文件 §11.1 C 文件概述  文件与文件名 文件是指存放在外部存储介质上的数据集合。 为标识一个文件,每个文件都必须有一个文件名, 其一般结构为:主文件名. 扩展名  根据文件的存储形式,可分为 ASCII 码文件和二 进制文件  读文件与写文件 读文件是将磁盘文件中的数据传送到计算机内存的操作。
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第二十五讲 ) 离散数学. 定理 群定义中的条件 ( 1 )和( 2 )可以减弱如下: ( 1 ) ’ G 中有一个元素左壹适合 1 · a=a; ( 2 ) ’ 对于任意 a ,有一个元素左逆 a -1 适 合 a -1 ·
Linux 内核源代码导读 中国科学技术大学计算机系 陈香兰( 0551 - ) Spring 2009.
第二章 随机变量及其分布 第一节 随机变量及其分布函数 一、随机变量 用数量来表示试验的基本事件 定义 1 设试验 的基本空间为 , ,如果对试验 的每一个基 本事件 ,规定一个实数记作 与之对应,这样就得到一个定义在基本空 间 上的一个单值实函数 ,称变量 为随机变量. 随机变量常用字母 、 、 等表示.或用.
第 4 章 过程与变量的作用范围. 4.1 Visual Basic 的代码模块 Visual Basic 的应用程序是由过程组成的, 过程代码存放在模块中。 Visual Basic 提供了 三类模块,它们是窗体模块、标准模块和类 模块。 窗体模块 窗体模块是大多数 Visual Basic.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 3 章 曲线拟合的最小二乘法 给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。 在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第三十九讲 ) 离散数学. 例 设 S 是一个集合, ρ ( S )是 S 的幂集合,集合 的交( ∩ ),并(∪)是 ρ ( S )上的两个代数运算, 于是,( ρ ( S ), ∩ ,∪) 是一个格。而由例 知.
实验三: 用双线性变换法设计 IIR 数字滤波器 一、实验目的 1 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 2 掌握数字滤波器的计算机仿真方法。 3 通过观察对实际心电图信号的滤波作用, 获得数字滤波的感性知 识。
语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析.
嵌入式操作系统 陈香兰 助教:毛熠璐、吴昊 Spring 2008.
第六章 文件管理. 程序设计中,文件是十分重要的,许多情况下, 使用文件可以高效地解决实际问题。有用的数据在后 备存储器上以文件的形式存储后,我们就可以通过文 件对数据进行访问、操作以及检索,这称为文件管理。 6.1 文件的分类 根据文件访问类型的不同,可以将文件分为三类: 顺序文件、随机文件和二进制文件。
OS 进程调度模拟演示 制作人: 钱晶 高上上. OS 进程调度模拟-实验原理 静态优先级原理 在这种方式下,系统一旦把处理机分配给就绪队 列中的优先权最高的进程后,该进程便一直执行下去, 直至完成。或因为发生某事件使该进程放弃处理机,系 统方可再将处理机分配给另一优先级最高的进程。这些 事件包括有优先级更高的进程进入,或是因为某些原因.
信息利用与学术论文写作 Library of Jiangsu University, Zhenjiang Sha Zhenjiang
第二章 贝叶斯决策理论 3学时.
非均相物系的分离 沉降速度 球形颗粒的 :一、自由沉降 二、沉降速度的计算 三、直径计算 1. 试差法 2. 摩擦数群法 四、非球形颗粒的自由沉降 1. 当量直径 de :与颗粒体积相等的圆球直径 V P — 颗粒的实际体积 2. 球形度  s : S—— 与颗粒实际体积相等的球形表面积.
量子化学 第四章 角动量与自旋 (Angular momentum and spin) 4.1 动量算符 4.2 角动量阶梯算符方法
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 5 章 解线性方程组的直接法 实际中,存在大量的解线性方程组的问题。很多数值方 法到最后也会涉及到线性方程组的求解问题:如样条插值的 M 和.
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
在发明中学习 线性代数 概念的引入 李尚志 中国科学技术大学. 随风潜入夜 : 知识的引入 之一、线性方程组的解法 加减消去法  方程的线性组合  原方程组的解是新方程的解 是否有 “ 增根 ” ?  互为线性组合 : 等价变形  初等变换  高斯消去法.
1 学籍归档工作 年学籍归档工作安排 从 2008 年开始,改为按届移交档案 从 2008 年开始,改为按届移交档案 今年的归档工作范围: 今年的归档工作范围: 2014 年应届毕业班级 2014 年应届毕业班级 2014 年办理毕业证的往届生。 2014 年办理毕业证的往届生。 整理内容:根据.
§2.2 一元线性回归模型的参数估计 一、一元线性回归模型的基本假设 二、参数的普通最小二乘估计( OLS ) 三、参数估计的最大或然法 (ML) 四、最小二乘估计量的性质 五、参数估计量的概率分布及随机干 扰项方差的估计.
第5章 键盘与鼠标接口 5.1 键盘概述 5.2 键盘的工作原理 5.3 PC扩展键盘接口 5.4 键盘中断与键盘I/O 5.5 鼠标接口.
9的乘法口诀 1 .把口诀说完全。 二八( ) 四六( ) 五八( ) 六八( ) 三七( ) 三八( ) 六七( ) 五七( ) 五六( ) 十六 四十八 四十二 二十四 二十一 三十五 四十 二十四 三十 2 .口算, 并说出用的是哪句口诀。 8×8= 4×6= 7×5= 6×8= 5×8=
第五节 学习要点 对句子的分析,向来是从句型、句类、句式的角度进行的。 以这三个角度为切入点,我们可以建立句型系统、句类系统和句 式系统。 ★句型系统 —— 按照句子的结构模式划分出来的类型系统。
第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
Relevance Theory Lecture 12. Relevance Theory 交际研究的对象是交际的概念、内容、 性质、功能、方法和交际行为、交际参 加者之间的关系等的认识和阐述。 20 世 纪 70 年代末以来, Sperber & Wilson 把认 知与交际结合起来,于 1986.
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
周期信号的傅里叶变换. 典型非周期信号 ( 如指数信号, 矩形信号等 ) 都是满足绝对可 积(或绝对可和)条件的能量信号,其傅里叶变换都存在, 但绝对可积(或绝对可和)条件仅是充分条件, 而不是必 要条件。引入了广义函数的概念,在允许傅里叶变换采用 冲激函数的前提下, 使许多并不满足绝对可积条件的功率.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
1 第 7 章 存储过程、触发器和程序包 在很多时候,都需要保存 PL/SQL 程序块,以便 随后可以重新使用。这也意味着,程序块需要一个名 称,这样需才可以调用或者引用它。命名的 PL/SQL 程序块可被独立编译并存储在数据库中,任何与数据 库相连接的应用程序都可以访问这些存储的 PL/SQL 程序块。
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
首 页 首 页 上一页 下一页 本讲内容本讲内容 视图,剖视图(Ⅰ) 复习: P107 ~ P115 作业: P48(6-2,6-4), P49( 去 6-6) P50, P51(6-13), P52 P50, P51(6-13), P52 P53 (6-18,6-20) P53 (6-18,6-20)
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
1 、如果 x + 5 > 4 ,那么两边都 可得 x >- 1 2 、在- 3y >- 4 的两边都乘以 7 可得 3 、在不等式 — x≤5 的两边都乘以- 1 可得 4 、将- 7x — 6 < 8 移项可得 。 5 、将 5 + a >- 2 a 移项可得 。 6 、将- 8x < 0.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
§10.2 对偶空间 一、对偶空间与对偶基 二、对偶空间的有关结果 三、例题讲析.
企业产品标准信息公共服务平台 操作介绍 目录 一 、系统架构介绍 二 、企业产品标准自我声明填报系统 三 、企业产品标准公示系统.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
项目 1 典型低压电器 的拆装、检修及调试 任务 2 交流接触器的拆装与检修 接触器是一种自动的电磁式自动开关,是 一种依靠电磁力作用使触点闭合或分离的自 动电器,用于接通和断开电动机或其它用电 设备电路。适用于远距离频繁地接通或断开 交直流主电路及大容量控制电路。交流接触 器具有控制容量大、操作方便、便于远距离.
力的合成 力的合成 一、力的合成 二、力的平行四边形 上一页下一页 目 录 退 出. 一、力的合成 O. O. 1. 合力与分力 我们常常用 一个力来代替几个力。如果这个 力单独作用在物体上的效果与原 来几个力共同作用在物体上的效 果完全一样,那么,这一个力就 叫做那几个力的合力,而那几个 力就是这个力的分力。
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
消防产品网上认证业务系统 操作指南(初始认证委托) 公安部消防产品合格评定中心 2015 年 4 月.
人 有 悲 欢 离 合, 月有阴晴圆缺。月有阴晴圆缺。 华师大版七年级数学第二册 海口市第十中学 数学组 吴锐.
1 第三章 数列 数列的概念 考点 搜索 ●数列的概念 ●数列通项公式的求解方法 ●用函数的观点理解数列 高考 猜想 以递推数列、新情境下的 数列为载体, 重点考查数列的通 项及性质, 是近年来高考的热点, 也是考题难点之所在.
§9. 恒定电流场 第一章 静电场 恒定电流场. 电流强度  电流:电荷的定向移动  正负电荷反方向运动产生的电磁效应相同 ( 霍尔效应 特例 ) 规定正电荷流动的方向为正方向  电流方向:正方向、反方向  电流强度 ( 电流 ) A 安培 标量 单位时间通过某一截面的电荷.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
§7.2 估计量的评价标准 上一节我们看到,对于总体 X 的同一个 未知参数,由于采用的估计方法不同,可 能会产生多个不同的估计量.这就提出一 个问题,当总体的一个参数存在不同的估 计量时,究竟采用哪一个好呢?或者说怎 样评价一个估计量的统计性能呢?下面给 出几个常用的评价准则. 一.无偏性.
Presentation transcript:

C语言程序设计 第十三章 文件

主要内容 13.1 文件概述 13.2 文件类型指针 13.3 文件的打开与关闭 13.4 文件的读写 13.5 文件的定位 13.6 习题

13.1 文件的概述 文件的概念 指存储在外部介质(如磁盘等)逻辑上有联系的数据的有序集合。 分类: 13.1 文件的概述 文件的概念 指存储在外部介质(如磁盘等)逻辑上有联系的数据的有序集合。 分类: 从用户的角度看,分为普通文件和设备文件两种。 按数据存储方式,分为:文本文件和二进制文件。

13.1 文件的概述 普通文件:一般指源文件、目标文件、可执行文件;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。 数据文件:用户数据。如未做特殊说明,本章中的文件指的是数据文件。 设备文件:是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。 通常把显示器定义为标准输出文件,在屏幕上显示信息就是向标准输出文件输出信息。

13.1 文件的概述 文本文件:也称为ASCII文件,这种文件在磁盘中存放时每个字符占用一个字节,用于存放对应的ASCII码。 13.1 文件的概述 文本文件:也称为ASCII文件,这种文件在磁盘中存放时每个字符占用一个字节,用于存放对应的ASCII码。 十进制数5678,在内存中的存储形式为00010110 00101110(二进制形式),只占2个字节,如果按ASCII形式输出,则占4个字节。 二进制文件是按二进制的编码方式来存放文件的。

13.1 文件的概述 缓冲文件系统 文件中的数据是从内存中传送到外部介质中的,缓冲文件系统自动在内存区开辟一个缓冲区,使数据输入输出都先放到缓冲区,等缓冲区放满时,再输出到设备上。

13.1 文件的概述 非缓冲文件系统 系统不自动开辟确定大小的缓冲区,而是由程序员为每个文件设定一个缓冲区。新的ANSI C标准不提倡使用“非缓冲文件系统”。 注意 不要在同一个程序内混合使用这两种文件的处理方法。因为它们调用文件的方式不同,有可能相互干扰。 由于C对文件的操作是字节,所以可以每次读/写1个字节,则读/写512个字节就需要512次启动外设的读写操作;但是,缓冲文件系统先将要读/写的数据放入缓冲区,装满了以后再启动外部设备的读/写操作。因此,读/写512字节,只需要启动一次外设,而不是512次。

13.2 文件类型指针 文件类型指针 是指向描述文件信息结构体的结构体变量,用于文件操作。 13.2 文件类型指针 文件类型指针 是指向描述文件信息结构体的结构体变量,用于文件操作。 在C语言中,对普通数据文件的所有操作都必须依靠文件类型指针来完成。要想对文件进行操作,首先必须将想要操作的数据文件与文件指针建立联系,然后通过这些文件指针来操作相应的文件。 C语言程序可同时处理多个文件,为了对每个文件进行有效的管理,就需要开辟一个“文件信息描述区”,记录文件的当前状态(文件名、文件大小等)。该信息描述区是用一个结构变量来命名和记录实现的。该结构变量名叫文件结构变量。文件结构变量的类型由系统定义,并取名为FILE。它通常被存放在<stdio.h>头文件中。

13.2 文件类型指针 每一个要操作的文件,都必须定义一个指针变量,并使它指向该文件结构变量,该指针叫文件类型指针。于是可通过该指针找到被操作文件的描述信息,进而对其进行读写。 FILE 结构类型的格式,各个编译系统有微小的区别,大致如下: typedef struct { short level; /*缓冲区“满”或“空”的程度 */ unsigned int flags; /* 文件代号*/ char fd; /* 文件描述符*/ unsigned char hold; /* 如无缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区首地址*/ unsigned char *curp; /* 指针当前位置(下一个待处理字节地址)*/ unsigned int istemp; /* 临时文件指示器*/ short token; /* 用于有效性检查*/ } FILE; /* 自定义的类型名*/

13.2 文件类型指针 定义说明文件指针格式 FILE* 指针变量标识符; 例如:FILE *fp; 13.2 文件类型指针 定义说明文件指针格式 FILE* 指针变量标识符; 例如:FILE *fp; 表示fp是指向FILE结构的指针变量,通过fp即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。

13.3 文件的打开与关闭 C语言程序中,文件在进行读/写操作之前要先打开,使用完毕要关闭。 打开文件 13.3 文件的打开与关闭 C语言程序中,文件在进行读/写操作之前要先打开,使用完毕要关闭。 打开文件 实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。 关闭文件 断开指针与文件之间的联系,也就禁止再对该文件进行操作。

13.3 文件的打开与关闭 文件打开函数fopen 函数原型 FILE *fopen(char *filename,char *mode); 13.3 文件的打开与关闭 文件打开函数fopen 函数原型 FILE *fopen(char *filename,char *mode); 参数说明 filename:要打开的文件路径 mode :打开模式 返回值 若成功,返回指向被打开文件的指针 若出错,返回空指针NULL(0)

13.3 文件的打开与关闭 r w a r+ w+ a+ t b 文件的打开模式 打开模式 描 述 只读,打开已有文件,不能写 13.3 文件的打开与关闭 文件的打开模式 打开模式 描 述 r 只读,打开已有文件,不能写 w 只写,创建或打开,覆盖已有文件 a 追加,创建或打开,在已有文件末尾追加 r+ 读写,打开已有文件 w+ 读写,创建或打开,覆盖已有文件 a+ 读写,创建或打开,在已有文件末尾追加 t 按文本方式打开 (缺省) b 按二进制方式打开

13.3 文件的打开与关闭 文件的打开举例 FILE *fp1, *fp2, *fp3; 13.3 文件的打开与关闭 文件的打开举例 FILE *fp1, *fp2, *fp3; char filename[ ]="file3.dat"; /* 以文本只读方式打开file1 */ if (!(fp1=fopen("file1", "r"))) { printf("Cannot Open This File!\n"); exit(0); /* 退出程序 */ } fp2=fopen("C:\\HOME\\FILE2.TXT", "rb+"); /* 以二进制读写方式打开FILE2.TXT */ fp3=fopen(filename, "a+b"); /* 以二进制读写方式打开file3.dat */

13.3 文件的打开与关闭 文件关闭函数 (fclose) 函数原型 int fclose(FILE *fp); 参数说明 13.3 文件的打开与关闭 文件关闭函数 (fclose) 函数原型 int fclose(FILE *fp); 参数说明 fp:要关闭的文件指针 返回值 若成功,返回0 若出错,返回EOF(-1) 不用的文件应必须关闭,防止数据破坏丢失

13.3 文件的打开与关闭 文件的关闭举例 FILE *fp; char file[]="D:\\USER\\STUDENTS.DAT"; 13.3 文件的打开与关闭 文件的关闭举例 FILE *fp; char file[]="D:\\USER\\STUDENTS.DAT"; if (!(fp=fopen(file, "rb+"))) { printf("Open file %s error!\n", file); exit(0); } ... ... fclose(fp);

13.3 文件的打开与关闭 C语言程序中,文件操作顺序为:打开-读/写-关闭。 文件操作程序的编写分以下几步: 定义文件指针; 13.3 文件的打开与关闭 C语言程序中,文件操作顺序为:打开-读/写-关闭。 文件操作程序的编写分以下几步: 定义文件指针; 打开文件,并判断是否成功打开,若打开文件失败,程序退出运行状态; 对文件进行读写等操作; 关闭文件。

13.4 文件的读写 文件的读写函数 函数 功能 fputc 输出字符 fprintf 格式化输出 fgetc 输入字符 fscanf 13.4 文件的读写 文件的读写函数 函数 功能 fputc 输出字符 fprintf 格式化输出 fgetc 输入字符 fscanf 格式化输入 putc putw 输出一个字 getc getw 输入一个字 fwrite 输出数据块 fputs 输出字符串 fread 输入数据块 fgets 输入字符串

13.4 文件的读写 feof函数 函数原型 int feof(FILE *fp); 参数 fp:文件指针 返回值 若文件结束,返回非零值 13.4 文件的读写 feof函数 函数原型 int feof(FILE *fp); 参数 fp:文件指针 返回值 若文件结束,返回非零值 若文件尚未结束,返回0

13.4 文件的读写 fputc/putc函数 函数原型 int fputc(int c, FILE *fp); 13.4 文件的读写 fputc/putc函数 函数原型 int fputc(int c, FILE *fp); int putc(int c, FILE *fp); 参数 c :要输出到文件的字符 fp:文件指针 返回值 若成功,返回输出的字符 若失败,返回EOF

13.4 文件的读写 fgetc/getc函数 函数原型 int fgetc(FILE *fp); int getc(FILE *fp); 13.4 文件的读写 fgetc/getc函数 函数原型 int fgetc(FILE *fp); int getc(FILE *fp); 参数 fp:文件指针 返回值 若成功,返回输入的字符 若失败或文件结束,返回EOF

13.4 文件的读写 举例:将file_in.txt的文件内容读出并写入到file_out.txt文件中 13.4 文件的读写 举例:将file_in.txt的文件内容读出并写入到file_out.txt文件中 #include <stdio.h> void main() { FILE *fp1, *fp2; char c; fp1 = fopen("file_in.txt", "r"); fp2 = fopen("file_out.txt", "w"); while(!feof(fp1)) { c = fgetc(fp1); fputc(c, fp2); } fclose(fp1); fclose(fp2);

13.4 文件的读写 fwrite和fread函数 函数原型 13.4 文件的读写 fwrite和fread函数 函数原型 size_t fwrite(void *buffer, size_t size, size_t count, FILE *fp); size_t fread (void *buffer, size_t size, size_t count, FILE *fp); 参数 buffer:要读/写的数据块地址 size :要读/写的每个数据项的字节数 count :要读/写的数据项数量 fp :文件指针 返回值 若成功,返回实际读/写的数据项数量 若失败,一般返回0

13.4 文件的读写 fwrite和fread函数举例 #include<stdio.h> 13.4 文件的读写 fwrite和fread函数举例 #include<stdio.h> struct student{ int no,age; } st; void main(){ int i; FILE *fp; fp=fopen("c:\\rr.dat","wb"); for(i=0;i<3;i++){ scanf("%d,%d", &st.no,&st.age); fwrite(&st,sizeof(st),1,fp); } fclose(fp); fp=fopen("c:\\rr.dat","rb"); while(!feof(fp)) { fread(&st,sizeof(st),1,fp); if(!feof(fp))printf("no:%d,age,%d\n",st.no,st.age);

13.4 文件的读写 fprintf和fscanf函数 函数原型 13.4 文件的读写 fprintf和fscanf函数 函数原型 int fscanf(FILE *fp, char *format[,address,...]); int fprintf(FILE *fp,char *format[,argument,...]); 说明 与printf和scanf函数类似 从文件输入或输出到文件

13.4 文件的读写 putw函数 函数原型 int putw(int w, FILE *fp); 参数 w :要输出到文件的整数(字) 13.4 文件的读写 putw函数 函数原型 int putw(int w, FILE *fp); 参数 w :要输出到文件的整数(字) fp:文件指针 返回值 若成功,返回输出的整数(字) 若失败,返回EOF

13.4 文件的读写 getw函数 函数原型 int getw(FILE *fp); 参数 fp:文件指针 返回值 13.4 文件的读写 getw函数 函数原型 int getw(FILE *fp); 参数 fp:文件指针 返回值 若成功,返回输入的整数(字) 若失败,返回EOF

13.4 文件的读写 fputs函数 函数原型 int fputs(char *s, FILE *fp); 返回值 13.4 文件的读写 fputs函数 函数原型 int fputs(char *s, FILE *fp); 返回值 若成功,返回输出字符个数(或最后的字符) 若失败,返回EOF 说明 字符串的结束标志'\0'不会输出到文件 也不会在字符串末尾自动添加换行符

13.4 文件的读写 fgets函数 函数原型 char *fgets(char *s, int n, FILE *fp); 返回值 13.4 文件的读写 fgets函数 函数原型 char *fgets(char *s, int n, FILE *fp); 返回值 若成功,返回s首地址;若失败,返回NULL 说明 从fp输入字符串到s中 输入n-1个字符,或遇到换行符或EOF为止 读完后自动在字符串末尾添加'\0'

13.5 文件的定位 文件位置指针 位置指针指向当前读写的位置 每次读写文件,位置指针都会相应移动 可以通过相关函数强制修改位置指针 rewind函数 fseek函数 ftell函数

13.5 文件的定位 正常读写过程中,文件指针自动下移,移到下一次应读写的位置。也可以使用文件指针移动函数, 人为移动文件指针: void rewind(FILE *fp) //使文件指针指向文件开头 int fseek(FILE +fp,long offset,int base); //从base移动offset个字节,正值向后移,负值向前移,移动成功返回1,否则返回非0 base值可选项: SEEK_SET(文件头) SEEK_CUR(当前指针位置) SEEK_END(文件尾) 辅助函数:long ftell(FILE *fp);获得文件指针当前位置

13.5 文件的定位 rewind函数 函数原型 void rewind(FILE *fp); 参数 fp:文件指针 功能 使文件位置指针重新返回文件开头

13.5 文件的定位 fseek函数 函数原型:int fseek(FILE *fp, long offset,int whence); 参数 fp :文件指针 offset:偏移量 whence:起始位置 功能:随机改变文件的位置指针 起始位置 SEEK_SET(0):文件开始 SEEK_CUR(1):文件当前位置 SEEK_END(2):文件末尾 举例 fseek(fp, 100L, SEEK_SET); fseek(fp, -10L, SEEK_CUR); fseek(fp, -20L, SEEK_END);

13.5 文件的定位 ftell函数 函数原型 long ftell(FILE *fp); 参数 fp:文件指针 返回值 若成功,返回当前文件指针位置 若出错,返回-1L