c语言程序设计与项目实践第13章.ppt_第1页
c语言程序设计与项目实践第13章.ppt_第2页
c语言程序设计与项目实践第13章.ppt_第3页
c语言程序设计与项目实践第13章.ppt_第4页
c语言程序设计与项目实践第13章.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章 文件 n本章的学习重点 文件的概念 文件的打开和关闭 文件的读写 文件的定位 13.1 文件和文件指针 C语言中,为了方便数据的输入和输出,按存 储格式的不同将数据分为不同的文件类型。程序 中读写外部的文件需要使用文件指针,文件指针 是C语言规定的用于读写文件的有效工具。 13.1.1 流和文件 n1文本流和二进制流 文本流(text stream) : 指流中的数据是以字符形式出现,每个字 符以一个字节的ASCII码表示,例如,2010这个数,在文本流中,每 个数字都使用与它对应的ASCII码表示,查附表1,得到2010的表示方 法为:00110010 00110000 00110001 00110000,共占4个字节。 二进制流: 指流中的数据是二进制数字序列,对于字母,使用一 个字节的二进制ASCII码61H表示,对于数字,使用一个字节的二进制 数表示,对控制字符如n等,不进行变换。在二进制流中,2010被 作为数组转换为二进制形式:00000111 11011010,共占2个字节。 n2文本文件和二进制文件 将以流表示的文件称为为流式文件,将文本流形式的数据文件称 为文本文件,将二进制流形式的数据文件称为二进制文件。 13.1.2 文件指针 定义文件类型的一般表达形式为: FILE *指针变量名; 例如,可以定义下面的指向文件的指针变量: FILE *fp1, *fp2; 上述定义表示fp1和fp2是指向FILE结构的指针变量 上述定义表示fp1和fp2是指向FILE结构的指针变量,通过fp1和 fp2即可找到存放某个文件信息的结构变量,然后按结构变量提供的信 息找到该文件,实施对文件的操作。习惯上也把fp1和fp2称为指向一 个文件的指针。 13.2 文件的打开和关闭 C语言中,文件的存在就是为了存储数据,和现在常 用的word文件类似,在对文件进行读写操作时需要先将文 件打开,对文件中的数据处理完毕之后要进行关闭操作。 不同于word以及excel等文档类型的文件,C语言的文件打 开和关闭需要使用文件指针以及调用文件处理函数来操作 。 13.2.1 文件的打开 打开一个文件需要使用文件指针和文件打开函数,文件打开的一 般表达形式为: 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 文件的打开 二进制文件: 通常以后缀.bin表示, 文本文件:通常以后缀.txt表示. 文件的打开方式主要有:文件读、文件写和文件末尾 添加数据。针对这些对文件的各种操作,C语言规定了12种 文件打开方式,如表13.1所示为文件打开方式映射表。 文件类型打开方式含义 二进制文件 “rb”以只读方式打开一个二进制文件 “wb”以只写方式打开一个二进制文件,若文件不存在,则新建该文件名的二进制文件 “ab”打开一个二进制文件,并将新输入的数据添加到文件末尾 “rb+”以读写方式打开一个二进制文件 “wb+”以读写方式打开一个二进制文件,若文件不存在,则新建该文件名的二进制文件 “ab+”以读写方式打开一个二进制文件,并将新输入的数据添加到文件末尾 文本文件 “rt”以只读方式打开一个文本文件 “wt”以只写方式打开一个文本文件,若文件不存在,则新建该文件名的文本文件 “at”打开一个文本文件,并将新输入的数据添加到文件末尾 “rt+”以读写方式打开一个文本文件 “wt+”以读写方式打开一个文本文件,若文件不存在,则新建该文件名的立文本文件 “at+”读写打开一个文本文件,允许读 ,或在文件末追加数据 13.2.1 文件的打开 各字符的含义如下: r:read的缩写,设置对文件的“读”权限 w:write的缩写,设置对文件的“写”权限 a:append的缩写,设置对文件的末尾添加数据操作 t:text的缩写,设置文件类型为文本文件 b:banary的缩写,设置文件类型为二进制文件 +:设置允许对文件进行“读”和“写”操作 n范例13.1 FileOpen.c 使用fopen函数以只读方式打开D盘下文件名为 test.txt的文本文件,若打开成功,则输出成功信息,若不成功,表明D 盘下没有该文件,此时,使用写方式打开文件,并检查D盘是否有新建 文件test.txt。 13.2.2 文件的关闭 C语言中,文件关闭的一般表达形式为: fclose ( 文件指针 ); 文件指针: 指接收fopen函数返回值的FILE类型的指针变量。 函数fclose: 返回int型的函数,当函数关闭文件成功时,返回0,否则 返回EOF,EOF为系统定义的宏,默认时该宏被定义为-1。使用fclose 函数时也应包含头文件stdio.h。 n范例13.2 FileClose.c 使用fopen函数以只读方式打开D盘下文件名为 hellofriends.txt的文本文件,然后关闭打开的文件,并判断文件是否 关闭成功。 当D盘路径下没有文件hellofriends.txt时,输出结果为: 错误: 文件 hellofriends.txt 打开失败! 并且,程序会出现崩溃性错误,如右图所示。 13.3 文件的读写 文件打开时可以设置文件打开后的权限。主要文件处理函数如表所示。 函数类别函数名功能 字符处理函数fgetc字符读取函数 fputc字符写入函数 字符串处理函数fgets字符串读取函数 fputs字符串写入函数 数据块处理函数freed数据块读取函数 fwrite数据块写入函数 格式化处理函数fscanf格式化输入函数 fprintf格式化输出函数 13.3.1 字符处理函数fgetc和fputc n1fgetc函数 fgetc函数的功能是从打开的文件中读取一个字符数据,其一般表达形 式为: 变量 = fgetc(文件指针); fgetc函数:返回值为字符型,一般以char型接收fgetc函数的返回值。 文件指针:指接收fopen函数返回值的文件指针变量。 例如:c = fgetc(fp); 表示从文件指针fp所指的已打开的文件中读 取一个字符,并将该字符赋给变量c。 n范例13.3 Funcfgetc.c 在D盘目录D:C_language下新建文本文件 helloall.txt,并使用fgetc函数读取硬盘中的文本文件,使用putchar函 数输出文件内读取出的字符。 13.3.1 字符处理函数fgetc和fputc n2fputc函数 fputc函数的功能是向打开的文件中写入一个字符数据,其一般表达形 式为: 变量 = fputc(字符,文件指针); fputc函数:返回值为整型,一般以int型接收fputc函数的返回值。 字符:指要写入的字符数据。 文件指针:指接收fopen函数返回值的文件指针变量。 例如:i = fputc(m, fp); 表示向文件指针fp所指的已打开的文件 中写入一个字符m。若写入成功,则返回写入的字符值,否则返回 EOF。 实训13.1建立readme文件 许多文件或安装程序包中都含有自述文件,通常命名为readme,这 些文件都是为了说明文件的使用方法或者程序的安装方法。在计算机路 径D:C_language下新建并打开一个readme文件,使用fputc函数向该文 件中输入一个关于C语言的简单说明文档,以字符#号结束。然后使用 fgetc函数输出文件的内容。 n1需求分析: 需求1:新建并打开一个文件名为readme的文本文件 需求2:使用fputc函数按字符输入说明文档,当输入#号时,结束 输入 需求3:使用fgetc函数按字符输出说明文档,直到文件结束 需求4:文件处理完毕后,关闭文件 n2技术应用 对于需求1,使用fopen函数,”wt+”方式打开文件readme.txt,当指 定路径D:C_language下该文件不存在时,系统自动新建该文件,并将其 打开。 对于需求2,新建子函数write_readm(),输入说明文档信息,当输 入#号时,输入结束。函数结束时应处理文件指针,使其指向文件开头 。 对于需求3,新建子函数read_readm(),输出说明文档信息。 对于需求4,函数调用结束后,调用函数fclose关闭文件。 13.3.2 字符串处理函数fgets和fputs n1fgets函数 fgets函数的功能是从打开的文件中读取一段字符串到字符数组中,其 一般表达形式为: fgets(字符数组名, n, 文件指针); 字符数组名:已定义的字符数组,n是正整数,表示从文件中读取含 有n-1个字符的字符串。 文件指针:指接收fopen函数返回值的文件指针变量。例如: char array_ch100; fgets(array_ch, 20, fp); 表示从文件指针fp所指的已打开的文件中读取长度为19的字符串 ,并将该字符串放进字符数组array_ch中。 n范例13.4 Funcfgets.c 在D盘目录D:C_language下新建文本文件 ExpoEmblem.txt,使用fgets函数读取长度为50的该文本文件字符串, 并打印出读取的字符串。 13.3.2 字符串处理函数fgets和fputs n2fputs函数 fputs函数的功能是向打开的文件中写入一段字符串,其一般表达形式 为: 变量 = fputs(字符串,文件指针); 变量:int型或char型变量。 字符串:指要写入的字符串数据,它可以是字符串常量,也可以是字 符数组名,也可以是指向字符串的字符指针。 文件指针:指接收fopen函数返回值的文件指针变量。 例如:i = fputs(“Welcome!”, fp); 表示向文件指针fp所指的已打 开的文件中写入一段字符串”Welcome”。若写入成功,则返回写入的 字符值,否则返回EOF。 n范例13.5 Funcfputs.c 在D盘目录D:C_language下新建并打开文本文 件NewWorld.txt,使用fputs函数写入一段字符串,并使用fgets函数将 输入的字符串原样输出。 13.3.3 数据段处理函数fread和fwrite n1fread函数 数据段读取函数fread调用的一般形式为: fread(文件指针1, size, n, 文件指针2); 文件指针1:指向有效内存空间的地址变量名或数组名。 size:要读取的数据段大小。 n:要读取的次数。 文件指针2:指接收fopen函数返回值的文件指针变量。 例如:要读取2次文件指针fp所指的文件中200字节大小的数据段 ,并将这段数据放到数组array中,可以使用下面的语句: int array300; fread(array, 200, 2, fp); 当对这段数据只读一次时,可以将表示次数的参数设为1,但不 能省略。调用fread函数时,所处理的文件必须是以读或读写方式打开 的文件。 13.3.3 数据段处理函数fread和fwrite n2fwrite函数 数据段写入函数fwrite可以按照规定的字节数向打开的文件中写入一 段数据,其一般表达形式为: 变量 = fwrite(文件指针, size, n, 文件指针); 函数中的参数如文件指针、size等与fread函数类似,区别在于fwrite函 数是将指针名所指的内存区域中size字节单元数据写入到文件n次。 例如:要向文件中写入一个结构体类型的数据,可以使用下面的 代码: 01struct Project 02 03char ProjectName32; 04int ProjectIncome; 05Lte = “LTE_eNodeB”, 23500; 06i = fwrite( /向文件中写入数据段 上述代码表示向文件指针fp所指的已打开的文件中写入一段结构 体数据。 实训13.2项目信息录入与输出 WCDMA项目和LTE项目是当前通信领域中体现3G和4G网络的主 要通信架构,设计一个方案,将两个项目的主要信息存储到指定目录 的文件中,并输出该项目信息,项目信息包括项目名称、项目负责人 、项目收益、项目支出和项目起止时间等。 1需求分析: 需求1:建立一个.h文件,用于存储结构体类型定义以及其他宏定义, 定义结构体,用于表达项目信息。 需求2:建立.c文件,处理打开文件和关闭文件操作,同时进行项目信息 录入。 需求3:设计两个子函数,一个用于向文件中写入信息,另一个用于从 文件中读出信息,并打印到屏幕上。 2技术应用 对需求1,新建头文件ProjectManagement.h,并在该文件中包含标准输 入输出头文件stdio.h,定义结构体Project用于项目信息模版。 对需求2,新建源代码文件ProjectManagement.c,处理主函数操作,打 开文件ProjectManagement.txt,并输入两个项目信息。 对需求3,新建源代码文件ProjectSavePrint.c,设计子函数 ProjectSave()用于向打开的文件中写入项目信息,设计子函数ProjectPrint()用 于从打开的文件中读出项目信息,然后打印到屏幕上。 13.3.4 标准格式读写函数fprintf和fscanf n1fprintf函数 fprintf函数用于由程序向磁盘文件中输出数据,其一般表达形式为: fprintf(文件指针,格式字符串,输出参数表列); 格式字符串和输出参数表列和printf函数定义相同。fprintf函数调用时 返回int型数值,其返回值有两种: 函数调用成功时:返回实际输出的字符数 函数调用失败时:返回EOF n2fscanf函数 fscanf函数用于从磁盘文件中读入数据,送到程序中处理,其一般表 达形式为: fscanf(文件指针,格式字符串,输入参数表列); fscanf函数调用时同样返回int型数值,其返回值有两种: 函数调用成功时:返回实际输入的字符数 函数调用失败时:返回EOF n范例13.6 FuncFprintfFscanf.c 打开D盘目录D:C_language下二进制 文件FprintfFscanf.bin,若文件不存在,则新建该文件。使用fprintf向 文件中输入int型、float型和字符串,然后使用fs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论