当前课程知识点:C语言程序设计 >  第12章 文件 >  12.3 文本文件读写 >  文本文件读写

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

文本文件读写在线视频

下一节:二进制文件读写

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

文本文件读写课程教案、知识点、字幕

同学们大家好

前一节我们介绍了如何打开和关闭文件

下面我们将讲解如何向文本文件读写字符

fgetc和fputc函数分别负责向文件读一个字符和写一个字符

fgetc的第1个字母f代表文件(file)

中间的get表示获取

最后一个字母c表示字符(character)

fgetc的含义很清楚

就是从文件读取一个字符

fputc也类似fgetc

从参数文件指针所指向的文件中读取一个字符数据

同时将读写位置指针向前移动一个字节

如果读取正常

返回读到的字符值

如果读到文件尾或出错

则返回EOF也就是-1

fputc将参数ch表示到字符数据输出到文件

指针fp指向的文件中

同时读写指针向前移动一个字节

指向下一个写入位置

如果写入成功

返回值就是字符数据ch

否则返回EOF

下面我们通过一个例子来讲解如何向文件写字符

比如我们要从从键盘输入字符

把它们存到磁盘上去

直到输入一个#结束

我们先不写代码

先理一下思路

我们需要一个文件指针来指向要写入的文件

需要一个字符型变量来保存输入的字符

循环输入直到输入#为止

现在我们来看一下如何实现

首先要定义文件指针File *fp

定义从键盘接收字符的变量ch

定义保存文件名的字符数组filename长度为10

scanf输入文件名

scanf后面的回车用getchar()函数接收

接下来打开文件fopen

使用w写的方式打开文件

返回值赋给文件指针fp

如果fp为空

则文件打开失败

输出错误信息

exit()函数终止程序

这个函数在stdlib.h头文件中

所以在最开始需要#include 头文件

如果文件打开成功

字符变量ch接收键盘输入字符

当输入字符ch不为结束符#时

执行while循环

循环调用fputc函数向文件写入字符ch

用putchar函数将ch字符显示在屏幕上

接着再调用getchar函数从键盘接收一个字符

循环一直执行到输入字符为结束符#为止

最后fclose关闭文件

通过这个例子我们明白了向文件写入字符的具体流程

前一个例子是将字符写入文件

那如何将文件中的字符读入内存呢

下面这个例子介绍了如何从文件中读取字符

比如现在需要将file1文件中的信息读出来

显示在屏幕上

下面我们详细讲解具体的过程

首先定义文件类型的指针in

定义读入文件的文件名为字符数组infile

scanf输入文件名

fopen函数只读方式打开文件infile

因为我们只需要从这个文件中读取字符

将fopen返回值赋给文件指针in

如果in为NULL则打开失败程序退出

其他情况下程序正常运行

下面我们看看如何进行读操作

首先调用fgetc()函数从文件指针in指向的文件中读取一个字符

放到字符变量ch中

接着需要判断是否已经读到文件末尾了

如果没有读到文件末尾

就将字符显示出来

接着继续读下一个字符

将字符存入变量ch

那么如何判断文件是否结束呢

调用feof()函数

这个函数的参数是文件类型的指针

如果到文件尾了

函数返回真否则返回假

最后将文件指针in关闭

前面我们介绍了使用如何使用fgetc和fputc函数向文件读写一个字符

有同学会问既然能向文件读写一个字符

那能不能一次读写一个字符串呢

这是可以的

下面我们介绍fgets和fputs函数向文件读写一个字符串

这是fgets函数的原型

从文件中读入一个字符串

fgets函数的参数有3个

第一个参数是字符数组

从文件中读入字符串存储到这个字符数组中

第二个参数是整数

读入的字符个数

第三个参数是读入的文件指针

在这里大家需要注意第二个参数n

n是要求得到的字符个数

但实际上只从文件中读入了n-1个字符

然后在最后加一个字符串结束标志′\0′

把它们放到字符数组str中

如果在读完n-1个字符之前遇到换行符

或文件结束符EOF则读入结束

但要将所遇到的换行符

也作为一个字符读入

若执行fgets函数成功

则返回值为str数组首元素的地址

如果一开始就遇到文件尾或读数据出错

则返回NULL

如何调用这个函数呢

我们可以这样调用

fgets str是保存的字符数组

n是读入字符个数-1

fp是读入的文件指针

前面介绍了用fgets函数从文件读取字符串

下面讲解fputs函数

这个函数和fgets相反

是向文件写入字符串

这是fputs函数的原型

这个函数有2个参数

第一个参数是将要写入文件的字符串指针

第二个参数是文件指针

fputs函数将str所指向的字符串输出到fp所指向的文件中

那怎么调用这个函数呢

这样用fputs china p

将字符串″China″输出到文件指针fp指向的文件中去

fputs函数中第一个参数可以是字符串常量

字符数组名或者字符型指针

写入文件时

字符串末尾的′\0′不写入

若写入成功

函数值为0;失败时

函数值为EOF(即-1)

fgets和fputs这两个函数的功能类似于gets和puts函数

只是gets和puts以终端为读写对象

而fgets和fputs函数以指定的文件作为读写对象

前面我们讲解了如何从一个文件中读取一个字符或字符串

以及将一个字符和字符串写入文件的方法

同学们会想有些时候我们从文件中读取或者写入文件的时候

我们的数据是有一定格式的

那么这种有格式的数据我们应该如何进行读写呢

这里我们使用fprintf和fscanf函数

从函数名可以看到

它们只是在printf和scanf的前面加了一个字母f

它们的作用与printf函数和scanf函数相似

都是格式化读写函数

只是scanf和printf函数是相对于显示器终端的格式化的输入输出

fprintf和fscanf函数是相对于文件的读写

我们可以这样用

fprintf函数有3个参数

第一个参数fp是要写入的文件指针

第二个参数是写入的格式

这里是按%d 逗号 %6.2f的格式写入

第三参数是要写入的变量列表

这里是一个整数和一个浮点数

Fprintf函数是将变量按指定的格式写入指定的文件中

而fscanf是从文件中按指定格式读

它的第一个参数是要读入的文件指针

第二个参数是按某种格式读取

第三个参数是读入的数据需要存储到的变量的地址

比如文件里有3逗号4.5

用fscanf读

将3存入整型变量i中

4.5存入浮点变量f中

这一节中我们讲解了如何对文本文件进行读写操作

而对于二进制文件的读写

我们下一节中再给大家介绍

谢谢大家

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 二进制文件读写

--二进制文件读写

--二进制文件读写

文本文件读写笔记与讨论

也许你还感兴趣的课程:

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