《C语言程序设计与数据结构》第10章 文件读写

合集下载

C语言程序与设计第十章

C语言程序与设计第十章

fgetc(fp)
#define putchar( c ) fputc(c,stdout)
#define getchar( ) fgetc(stdin)
例 从键盘输入字符#,inc#逐liund个celu<dsetd<isot.dhi>o.h>
存到磁盘文件中m,ai#m直ni(na)到cinlu()de <stdio.h>
F功IL能E:*f按p; 格式对文件进行I/O操作 i{返f((p值fpu=t:sf(o"成pcea功nn('",t返toeps回te"nI,"/fiwOle"的")));=个=eN数xUit;出(L)L;错) }或文件尾,返回EOF
例 ffpscrianntf(fsptd,“i%n,"d,%%s6%.2fd”",i,st),&; a)/;/将/*ir和eat按d%frdo,%m6.k2fe格ab式o输ar出d到*/fp文件 ffspcrainnft(ff(pf,p“,%"%d,%s f%”,&d"i,,&s,ta));;/*/w/若r文ite件t中o有fil3e,4*.5/ ,则将3送入i, 4.5送入t
函数原型: {inptrif{nceltoofff(s(p"eFuC(IftLpacn)(E;cnho*,tffppo))p;en outfile.\n");
功能:判断文}e件xi是t(0否)p;u结tc束har(ch);
返值:文件结} 束,返ch回=g真et(ch非ar0()); ;文件未结束,返
二进制形式
二进制文件特点: 存储量小、速度快、便于存放中间结果

C语言程序设计教程第10章(2024)

C语言程序设计教程第10章(2024)
43
THANKS
2024/1/26
44
16
05
文件操作综合应用实例
2024/1/26
17
学生信息管理系统设计思路
01
系统功能需求
学生信息管理系统需要实现学生信息的录入、查询、修改和Байду номын сангаас除等功能

02
数据结构设计
采用结构体数组来存储学生信息,每个学生信息包括学号、姓名、性别
、年龄、成绩等字段。
2024/1/26
03
文件操作规划
使用文件来保存学生信息,实现数据的持久化存储。在程序启动时,从
fprintf(fp, "%s %s %c %d %fn", students[i].id, students[i].name, students[i].gender, students[i].age, students[i].score);
35
关键代码实现及解析
}
fclose(fp);
2024/1/26
41
练习题及答案解析
3. 题目
编写一个程序,实现两个二进制文件的合并 。
答案解析
首先需要使用`fopen()`函数以读取模式打开 两个二进制文件,以写入模式打开一个新的 二进制文件。然后使用`fread()`函数从两个 文件中读取内容,并使用`fwrite()`函数将读 取的内容写入到新文件中。最后使用 `fclose()`函数关闭所有文件。
2024/1/26
21
关键代码实现及解析
int age;
float score;
} Student;
2024/1/26
22
关键代码实现及解析

C语言程序设计 课件 第十章(适于清华谭浩强版)

C语言程序设计 课件 第十章(适于清华谭浩强版)
定义了文件指针以后,意味着:开辟一 个FILE结构的空间,用指针fp指向它。
2021/7/13
4
10.3文件的打开与关闭
10.3.1 文件的打开 C语言的文件操作都用函数实现。 fopen()函数用来打开文件。
fp=fopen(文件名,使用文件方式); fp为已定义的文件指针。 例: FILE *fp;
数据块的读入和写出。
顺序文件。
fread(datapointer,size,count,fp)
fwrite(datapointer,size,count,fp)
其中,datapointer是读写存取数据的
地址。读入数据时,把要读入的数据存放
在它指定的区域。输出数据时,从该地址
指定的区域开始输出。
size * count 读写的总字节数。
使文件指针与文件“脱钩”,关闭以后,不
能再对该文件进行操作。
fclose函数
fclose(文件指针)
例如:fclose(fp);
文件操作的顺序:
打开——》处理——》关闭
保证文件操作的正常执行。
与缓冲区有关。
2021/7/13
8
10.4 文件的读写
10.4.1 fputc函数与fgetc函数
1、fputc()
第10章 文件
10.1 C文件概述
10.1.1 概念 存储在外部介质上数据的集合,是操作 系统管理数据的单位。 外部介质: 磁盘 (输入、输出都可)
终端键盘 ——输入文件 显示器 打印机 ——输出文件
2021/7/13
1
10.1.2 数据流
C语言把文件看作数据流。
字节的序列。
字节流或二进制流。
ASCII文件与二进制文件。

《C程序设计》课件第10章

《C程序设计》课件第10章

在C语言中文件的含义更为广泛,不仅包含以上所述 的磁盘文件,还包括一切能进行输入/输出的终端设备,它 们被看成是设备文件。如键盘常称为标准输入文件,显示 器称为标准输出文件。
文件是由磁盘文件和设备文件组成的。作为磁盘文件 之一的数据文件是本章学习的主要对象。
根据文件内数据的组织形式, 文件可分为文本(text) 文件和二进制文件。 文本文件又称为ASCII码文件, 这种文件在磁盘中存放时每个字节存放一个字符的ASCII 码。 ASCII码文件可在屏幕上按字符显示, 文件的内容可 以通过编辑程序(如记事本等)进行建立和修改, 人们能读 懂文件内容。 但是ASCII码文件所占存储空间较多, 处理 时要花费转换时间(内存中的二进制形式与ASCII码之间的 转换)。
typedef struct
{
short
level; /* 缓冲区“满”或“空”的程
度 */
unsigned flags; /* 文件状态标志 */
char
fd; /* 文件描述符 */
unsigned char hold; /* 如无缓冲区不读取字符 */
short
bsize; /* 缓冲区的大小 */
缓冲文件系统中,关键的概念是文件指针。
通常,由于文件中的数据很多,因此读/写时应该指明 对哪个数据进行操作。流式文件中采用的方法是设立一个 专门用来存放文件读/写位置的变量,称为当前工作指针。 在对某文件开始进行操作时,将当前工作指针的值设置为 0,表示文件从头开始读(写); 每次读(写)之后,自动将当 前工作指针的值加上本次读(写)的字节数,作为下次读(写) 的位置。从前面的介绍可以看出,要对一个文件进行操作, 除了要设当前工作指针,还必须管理缓冲区。实际上,在 头文件stdio.h中,定义了一个名为FILE的类型,包含了所 有与文件操作有关的数据成员,这个文件类型是文件处理 的基础。文件类型FILE不是C语言的新类型,它是用 typedef定义出来的有关文件信息的一种结构体类型。如 Turbo C的stdio.h文件中有如下的定义:

c语言程序设计教程第10章文件

c语言程序设计教程第10章文件
程序 输入文件缓冲区 缓冲文件系统: 非缓冲文件系统: 指令区 程序数据区 用户数据区 a 磁盘文件 磁盘
输出文件缓冲区 缓冲区
广西工学院
10.1.2 文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中
typedef struct { int _fd; int _cleft; int _mode; char *_next; char *_buff; }FILE;
//文件号 //缓冲区中剩下的字符数 //文件操作方式 //文件当前读写位置 //文件缓冲区位置
广西工学院
文件类型指针
有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变 量,以便存放若干个文件的信息。 例如,可以定义以下FILE类型的数组.FILE f[5];定义了一个结构 体数组f,它有5个元素,可以用来存放5个文件的信息. 可以定义文件型指针变量.
例2 FILE *fp; char *filename=“c:\\fengyi\\bkc\\test.dat” fp= fopen(filename,”r”);
例3 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); }
指针变量定义: FILE *fp; 说明:
fp是一个指向FILE类型结构体的指针变量。可以使fp指向某 一个文件的结构体变量,从而通过该结构体变量中的文件信 息能够访问该文件。也就是说,通过文件指针变量能够找到 与它相关的文件。如果有n个文件,一般应设n个指针变量(指 向FILE类型结构体的指针变量),使它们分别指向n个文件(确 切地说指向存放该文件信息的结构体变量),以实现对文件的 访问。

C语言程序设计第10章文件及其应用

C语言程序设计第10章文件及其应用

学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。

流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。

C语言程序设计第10章文件及其应用

C语言程序设计第10章文件及其应用
第10章 文件及其应用
本章内容中我们将学习 1 文本文件的读写 2 二进制文件的读写 3 文件的定位与随机读写
.
10.1文本文件的读写
对文件的操作只有读和写两种,通常情况 下,将内存中的数据写入到文件,称为文 件的输出;将文件中的数据读入到内存称 为文件的输入。C语言中,以缓冲文件系 统方式读写文件的步骤为①定义文件指针; ②打开文件;③读写文件;④关闭文件。
.
想一想
问题10.1用fputs函数实现应如何修改程序?请根据提示 写出完整程序。
提示:(1)删除语句int i;
(2)可将语句
i=0;
while(chInfo[i]!='\0'){
fputc(chInfo[i],fp);
i++;
}
改为:
fputs(chInfo,fp);
.
试一试
问题10.2 打开问题10.1生成的文件myInfo.txt, 将其中的内容显示在屏幕上,要求文件名从命 令行参数输入。
.
流程图
.
程序代码
#include "stdio.h" void main() { FILE *fp;/*定义文件指针*/
char chInfo[20];/*定义数组*/ int i; fp=fopen("myInfo.txt","w");/*以写文本文件方式打开文件*/ if(fp==NULL)/*如果打开文件失败,则结束程序*/ { printf("cannot open this file\n");
.
学一学
.
学一学
3. 文件的读写通过函数进行。文本文件的读写函数主要有fgetc和 fputc, fgets和fputs,其调用形式如表10-2所示。

《C语言程序设计教程》课件-第10章

《C语言程序设计教程》课件-第10章
ASCII文件(或称文本文件) ASCII码文件中每个字节存放一个ASCII代码,代表
一个字符,此种存储形式便于输出显示,在DOS操作系统 下可以直接阅读。
二进制文件
二进制文件中的数据是按照在内存中的二进制存储 格式存放的,此种存储形式节省存储单元。二进制文件 在DOS操作系统下不能直接阅读。
*.C
C语言的源程序 文本文件
*.OBJ
目标文件
二进制文件
*.EXE
可执行文件
二Байду номын сангаас制文件
文件的存储特性
文件是一个有序的数据序列。C语言把文件作 为一个字符(字节)序列处理,对文件的存取是 以字符(字节)为单位进行的。
2019/11/19
10.1 文件的概述
4
10.1.1 文件和文件指针
1. 什么是文件
1
C 语言程序设计
第10章 文 件
北京科技大学 计算机系
第10章 文件
2
10.1 文件的概念 10.2 文本文件的读写 10.3 二进制文件的读写
2019/11/19
10.1 文件的概述
3
10.1.1 文件和文件指针
1. 什么是文件
文件:存储在外部存储介质上相关数据的集合。
例如:程序文件中保存着程序,数据文件中保存着数据。
① 标准输入文件,文件指针为stdin,系统指定为 键盘。
② 标准输出文件,文件指针为stdout,系统指定为 显示器。
③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。
2019/11/19
10.1 文件的概述
11
10.1.2 文件的打开与关闭
操作文件的一般步骤
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档