当前课程知识点:C语言程序设计 >  第12章 文件 >  12,2 文件的打开和关闭 >  文件的打开和关闭

返回《C语言程序设计》慕课在线视频课程列表

文件的打开和关闭在线视频

下一节:文本文件读写

返回《C语言程序设计》慕课在线视频列表

文件的打开和关闭课程教案、知识点、字幕

上一节中我们介绍了文件的基本概念和文件指针

下面我们讲解如何通过文件指针对文件进行操作

在对文件进行读写操作之前应该

打开该文件

在使用结束之后应关闭

所谓打开

是指为文件建立相应的信息区

用来存放有关文件的信息

另外还要为文件建立文件缓冲区

用来暂时存放输入输出的数据

在编写程序时

在打开文件的同时

一般都指定一个指针变量指向该文件

也就是建立起指针变量与文件之间的联系

这样就可以通过该指针变量对文件进行读写了

关闭是指撤销打开文件时创建的文件信息区和文件缓冲区

使文件指针变量不再指向该文件

显然就无法进行对文件的读写了

下面我们看看如何具体打开和关闭文件

在打开文件时

调用fopen函数指定一个指针变量指向该文件

fopen函数的参数为打开文件的位置和使用文件的方式

下面我们看一下代码如何写

首先定义文件指针fp;然后调用fopen函数

将返回值赋给指针变量fp

其中参数a1是要打开的文件名

r是以读入方式打开该文件

在打开文件的时候需要通知编译系统以下3个信息

第一是需要打开文件的名字

第二是使用文件的方式

是读文件还是写文件

第三是让哪一个指针变量指向被打开的文件

有了这3个信息以后就可以对文件进行读写了

同学们我们使用文件的方式有哪些呢

可以读可以写也可以读写

有很多

这些使用文件的方式就作为fopen函数的第2个参数

r是只读 是为了输入数据

打开一个已存在的文本文件

如果指定的文件不存在则出错

w只写 是为了输出数据

打开一个文本文件

如果指定的文件不存在

则建立新文件

a追加 是为了向文本文件尾添加数据

如果指定的文件不存在则出错

r+读写 打开一个已经存在的文件

既可以读取数据也可以写入数据

w+读写 创建一个新文件读写

如果文件已经存在

则覆盖原文件

a+(读写等价于a

但可以从文件中读取数据

这些打开方式都可以组合

如果文件打开成功

fopen函数就返回该文件的指针

如果打开失败

fopen函数则返回NULL

讲了这么多种使用文件的方式

在使用完文件后我们应该将文件关闭

文件关闭就是撤销文件信息区和文件缓冲区

使文件指针变量不再指向该文件

使文件指针变量与文件脱钩

文件关闭调用fclose函数

参数为已打开的文件指针变量

使用完一个文件后应该关闭它

以防止它再被误用

文件关闭后不能再通过该指针对原来与其相联系的文件进行读写操作

除非再次打开

使该指针变量重新指向该文件

有些同学会问如果不关闭文件会怎么样呢

如果不关闭文件就结束程序运行将会丢失数据

因为在向文件写数据时

是先将数据输出到缓冲区

待缓冲区充满后才正式输出给文件

如果当数据未充满缓冲区的时候程序结束运行

就有可能使缓冲区中的数据丢失

用fclose函数关闭文件时

先把缓冲区中的数据输出到磁盘文件

然后才撤销文件信息区

有的编译系统在程序结朿前会自动先将缓冲区中的数据写到文件

从而可以避免这个问题

但我们还是应当养成在程序终止之前关闭所有文件的习惯

fclose函数的返回值为0或EOF

关闭成功时返回0

否则返回EOF

也就是-1

同学们这节我们介绍了文件的打开和关闭

对于文件打开之后应该如何来进行读写操作呢

我们下一节继续讲解

谢谢大家

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

文件的打开和关闭笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。