c语言程序设计与项目实践第13章

上传人:san****019 文档编号:70891693 上传时间:2019-01-18 格式:PPT 页数:21 大小:392.31KB
返回 下载 相关 举报
c语言程序设计与项目实践第13章_第1页
第1页 / 共21页
c语言程序设计与项目实践第13章_第2页
第2页 / 共21页
c语言程序设计与项目实践第13章_第3页
第3页 / 共21页
c语言程序设计与项目实践第13章_第4页
第4页 / 共21页
c语言程序设计与项目实践第13章_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《c语言程序设计与项目实践第13章》由会员分享,可在线阅读,更多相关《c语言程序设计与项目实践第13章(21页珍藏版)》请在金锄头文库上搜索。

1、第13章 文件,本章的学习重点 文件的概念 文件的打开和关闭 文件的读写 文件的定位,13.1 文件和文件指针,C语言中,为了方便数据的输入和输出,按存储格式的不同将数据分为不同的文件类型。程序中读写外部的文件需要使用文件指针,文件指针是C语言规定的用于读写文件的有效工具。,13.1.1 流和文件,1文本流和二进制流 文本流(text stream) : 指流中的数据是以字符形式出现,每个字符以一个字节的ASCII码表示,例如,2010这个数,在文本流中,每个数字都使用与它对应的ASCII码表示,查附表1,得到2010的表示方法为:00110010 00110000 00110001 0011

2、0000,共占4个字节。 二进制流: 指流中的数据是二进制数字序列,对于字母,使用一个字节的二进制ASCII码61H表示,对于数字,使用一个字节的二进制数表示,对控制字符如n等,不进行变换。在二进制流中,2010被作为数组转换为二进制形式:00000111 11011010,共占2个字节。 2文本文件和二进制文件 将以流表示的文件称为为流式文件,将文本流形式的数据文件称为文本文件,将二进制流形式的数据文件称为二进制文件。,13.1.2 文件指针,定义文件类型的一般表达形式为: FILE *指针变量名; 例如,可以定义下面的指向文件的指针变量: FILE *fp1, *fp2; 上述定义表示fp

3、1和fp2是指向FILE结构的指针变量 上述定义表示fp1和fp2是指向FILE结构的指针变量,通过fp1和fp2即可找到存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。习惯上也把fp1和fp2称为指向一个文件的指针。,13.2 文件的打开和关闭,C语言中,文件的存在就是为了存储数据,和现在常用的word文件类似,在对文件进行读写操作时需要先将文件打开,对文件中的数据处理完毕之后要进行关闭操作。不同于word以及excel等文档类型的文件,C语言的文件打开和关闭需要使用文件指针以及调用文件处理函数来操作。,13.2.1 文件的打开,打开一个文件需要使用文件指针

4、和文件打开函数,文件打开的一般表达形式为: FILE *指针变量名; 指针变量名= fopen(文件路径,文件打开方式); 其中,指针变量名是FILE类型的指针变量,且必须是FILE类型。 函数fopen返回类型为FILE的指针,若返回NULL,表明函数打开文件失败。 例如,以只读方式打开在D盘下的二进制文件test.txt,可以使用下面的两条代码: FILE *fp = NULL; fp = fopen(“D: test.txt”, “rb”); 其中,“D: test.txt”表示要打开D盘下的文件test.txt,”rb”表明以只读方式打开二进制文件。,13.2.1 文件的打开,二进制文

5、件: 通常以后缀.bin表示, 文本文件:通常以后缀.txt表示. 文件的打开方式主要有:文件读、文件写和文件末尾添加数据。针对这些对文件的各种操作,C语言规定了12种文件打开方式,如表13.1所示为文件打开方式映射表。,13.2.1 文件的打开,各字符的含义如下: r:read的缩写,设置对文件的“读”权限 w:write的缩写,设置对文件的“写”权限 a:append的缩写,设置对文件的末尾添加数据操作 t:text的缩写,设置文件类型为文本文件 b:banary的缩写,设置文件类型为二进制文件 +:设置允许对文件进行“读”和“写”操作 范例13.1 FileOpen.c 使用fopen函

6、数以只读方式打开D盘下文件名为test.txt的文本文件,若打开成功,则输出成功信息,若不成功,表明D盘下没有该文件,此时,使用写方式打开文件,并检查D盘是否有新建文件test.txt。,13.2.2 文件的关闭,C语言中,文件关闭的一般表达形式为: fclose ( 文件指针 ); 文件指针: 指接收fopen函数返回值的FILE类型的指针变量。 函数fclose: 返回int型的函数,当函数关闭文件成功时,返回0,否则返回EOF,EOF为系统定义的宏,默认时该宏被定义为-1。使用fclose函数时也应包含头文件stdio.h。 范例13.2 FileClose.c 使用fopen函数以只读

7、方式打开D盘下文件名为hellofriends.txt的文本文件,然后关闭打开的文件,并判断文件是否关闭成功。 当D盘路径下没有文件hellofriends.txt时,输出结果为: 错误: 文件 hellofriends.txt 打开失败! 并且,程序会出现崩溃性错误,如右图所示。,13.3 文件的读写,文件打开时可以设置文件打开后的权限。主要文件处理函数如表所示。,13.3.1 字符处理函数fgetc和fputc,1fgetc函数 fgetc函数的功能是从打开的文件中读取一个字符数据,其一般表达形式为: 变量 = fgetc(文件指针); fgetc函数:返回值为字符型,一般以char型接收

8、fgetc函数的返回值。 文件指针:指接收fopen函数返回值的文件指针变量。 例如:c = fgetc(fp); 表示从文件指针fp所指的已打开的文件中读取一个字符,并将该字符赋给变量c。 范例13.3 Funcfgetc.c 在D盘目录D:C_language下新建文本文件helloall.txt,并使用fgetc函数读取硬盘中的文本文件,使用putchar函数输出文件内读取出的字符。,13.3.1 字符处理函数fgetc和fputc,2fputc函数 fputc函数的功能是向打开的文件中写入一个字符数据,其一般表达形式为: 变量 = fputc(字符,文件指针); fputc函数:返回值

9、为整型,一般以int型接收fputc函数的返回值。 字符:指要写入的字符数据。 文件指针:指接收fopen函数返回值的文件指针变量。 例如:i = fputc(m, fp); 表示向文件指针fp所指的已打开的文件中写入一个字符m。若写入成功,则返回写入的字符值,否则返回EOF。,实训13.1建立readme文件,许多文件或安装程序包中都含有自述文件,通常命名为readme,这些文件都是为了说明文件的使用方法或者程序的安装方法。在计算机路径D:C_language下新建并打开一个readme文件,使用fputc函数向该文件中输入一个关于C语言的简单说明文档,以字符#号结束。然后使用fgetc函数

10、输出文件的内容。 1需求分析: 需求1:新建并打开一个文件名为readme的文本文件 需求2:使用fputc函数按字符输入说明文档,当输入#号时,结束输入 需求3:使用fgetc函数按字符输出说明文档,直到文件结束 需求4:文件处理完毕后,关闭文件 2技术应用 对于需求1,使用fopen函数,”wt+”方式打开文件readme.txt,当指定路径D:C_language下该文件不存在时,系统自动新建该文件,并将其打开。 对于需求2,新建子函数write_readm(),输入说明文档信息,当输入#号时,输入结束。函数结束时应处理文件指针,使其指向文件开头。 对于需求3,新建子函数read_rea

11、dm(),输出说明文档信息。 对于需求4,函数调用结束后,调用函数fclose关闭文件。,13.3.2 字符串处理函数fgets和fputs,1fgets函数 fgets函数的功能是从打开的文件中读取一段字符串到字符数组中,其一般表达形式为: fgets(字符数组名, n, 文件指针); 字符数组名:已定义的字符数组,n是正整数,表示从文件中读取含有n-1个字符的字符串。 文件指针:指接收fopen函数返回值的文件指针变量。例如: char array_ch100; fgets(array_ch, 20, fp); 表示从文件指针fp所指的已打开的文件中读取长度为19的字符串,并将该字符串放进

12、字符数组array_ch中。 范例13.4 Funcfgets.c 在D盘目录D:C_language下新建文本文件ExpoEmblem.txt,使用fgets函数读取长度为50的该文本文件字符串,并打印出读取的字符串。,13.3.2 字符串处理函数fgets和fputs,2fputs函数 fputs函数的功能是向打开的文件中写入一段字符串,其一般表达形式为: 变量 = fputs(字符串,文件指针); 变量:int型或char型变量。 字符串:指要写入的字符串数据,它可以是字符串常量,也可以是字符数组名,也可以是指向字符串的字符指针。 文件指针:指接收fopen函数返回值的文件指针变量。 例

13、如:i = fputs(“Welcome!”, fp); 表示向文件指针fp所指的已打开的文件中写入一段字符串”Welcome”。若写入成功,则返回写入的字符值,否则返回EOF。 范例13.5 Funcfputs.c 在D盘目录D:C_language下新建并打开文本文件NewWorld.txt,使用fputs函数写入一段字符串,并使用fgets函数将输入的字符串原样输出。,13.3.3 数据段处理函数fread和fwrite,1fread函数 数据段读取函数fread调用的一般形式为: fread(文件指针1, size, n, 文件指针2); 文件指针1:指向有效内存空间的地址变量名或数组

14、名。 size:要读取的数据段大小。 n:要读取的次数。 文件指针2:指接收fopen函数返回值的文件指针变量。 例如:要读取2次文件指针fp所指的文件中200字节大小的数据段,并将这段数据放到数组array中,可以使用下面的语句: int array300; fread(array, 200, 2, fp); 当对这段数据只读一次时,可以将表示次数的参数设为1,但不能省略。调用fread函数时,所处理的文件必须是以读或读写方式打开的文件。,13.3.3 数据段处理函数fread和fwrite,2fwrite函数 数据段写入函数fwrite可以按照规定的字节数向打开的文件中写入一段数据,其一般

15、表达形式为: 变量 = fwrite(文件指针, size, n, 文件指针); 函数中的参数如文件指针、size等与fread函数类似,区别在于fwrite函数是将指针名所指的内存区域中size字节单元数据写入到文件n次。 例如:要向文件中写入一个结构体类型的数据,可以使用下面的代码: 01 struct Project 02 03 char ProjectName32; 04 int ProjectIncome; 05 Lte = “LTE_eNodeB”, 23500; 06 i = fwrite( /向文件中写入数据段 上述代码表示向文件指针fp所指的已打开的文件中写入一段结构体数据。

16、,实训13.2项目信息录入与输出,WCDMA项目和LTE项目是当前通信领域中体现3G和4G网络的主要通信架构,设计一个方案,将两个项目的主要信息存储到指定目录的文件中,并输出该项目信息,项目信息包括项目名称、项目负责人、项目收益、项目支出和项目起止时间等。 1需求分析: 需求1:建立一个.h文件,用于存储结构体类型定义以及其他宏定义,定义结构体,用于表达项目信息。 需求2:建立.c文件,处理打开文件和关闭文件操作,同时进行项目信息录入。 需求3:设计两个子函数,一个用于向文件中写入信息,另一个用于从文件中读出信息,并打印到屏幕上。 2技术应用 对需求1,新建头文件ProjectManagement.h,并在该文件中包含标准输入输出头文件stdio.h,定义结构体Project用于项目信息模版。 对需求2,新建源代码文件ProjectM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号