c语言文件资源,C语言文件.pptx

C语言文件.pptx

第十一章 文件的操作,主讲教师 贾月乐 电话13402866690,2,课程引入,程序所需数据如何提供,程序运行时由键盘输入 程序代码中给定,程序运行结果如何永久保存,所谓“文件”是指一组相关数据的有序集合。 程序文件中保存着程序,数据文件中保存着数据。 *.C C语言的源程序 文本文件 *.OBJ 目标文件 二进制文件 *. 可执行文件 二进制文件 文件的存储特性 文件是一个有序的数据序列。 C语言把文件作为一个字符(字节)序列处理,对文件的存取是以字符(字节)为单位进行的。,什么是文件,在C语言中,“文件”的概念被进一步扩大,把每台与主机相连的输入输出设备都看作是一个文件。即把实际的物理设备抽象为逻辑文件,它们被称为设备文件。 对外部设备的输入输出就是对设备文件的读写。,特殊的文件设备文件,按在内存中的组织形式 文本文件每个字节存放一个字符的ASCII码; 二进制文件按二进制的编码方式来存放文件的。 例将整数1949分别存储在这两种数据文件中。,文件的种类,ASCII文件ASCII码,二进制文件补码,占用4个字节,占用2个字节,按照对文件的处理方式 缓冲文件利用缓冲文件系统处理的文件称为缓冲文件。 系统处理方法在内存中为每个正在使用的缓冲文件开辟一个缓冲区,其大小是512个字节。对文件读写数据都通过缓冲区进行。 非缓冲文件利用非缓冲文件系统处理的文件称为非缓冲文件。 系统处理非缓冲文件时,不为文件开辟缓冲区,需要程序员自行设计并管理缓冲区。,文件的种类,83年以后ANSI C标准中取消了非缓冲文件系统,对文本文件和二进制文件均采用缓冲文件系统进行处理。,系统对文件的处理过程就是对文件进行输入/输出操作的过程。 从文件读数据时,先一次性从磁盘文件中读取一批数据到缓冲区,然后再从缓冲区逐个将数据送入变量。 向文件写数据时,也是先将变量中数据送到缓冲区,待缓冲区装满后,再一起存到磁盘文件中。,系统如何处理文件,如何指向装入缓冲区后文件,文件类型的指针 文件结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中,文件类型的指针,typedef struct short level; /* 缓冲区“慢”或“空”的程度 */ unsigned flags; /* 文件状态标志 */ char fd; /* 文件描述符 */ unsigned char hold; /* 如果没有缓冲区不读取字符 */ short bsize; /* 缓冲区大小 */ unsigned char *buffer; /* 数据缓冲区 */ unsigned char *curp; /* 当前位置指针 */ unsigned istemp; /* 临时文件指示器 */ short token; /* 用于有效性检查 */ FILE;,注意在C语言中,无论对磁盘文件还是设备文件的读/写都要通过FILE类型的结构体变量进行。因此对于每个使用中的磁盘文件必须先定义一个FILE类型的文件指针变量并指向此变量。,文件类型指针的使用 指针变量说明 FILE *fp; 用法 文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件 文件关闭后,它的文件结构体被释放,文件类型的指针,标准文件是外部设备中的三个特殊的设备文件。它们的文件指针是系统定义的,并由系统自动打开和关闭。这三个标准文件分别是 标准输入文件,文件指针为stdin,系统指定为键盘。 标准输出文件,文件指针为stdout,系统指定为显示器。 标准错误输出文件,文件指针为stderr,系统指定为显示器,输出错误信息。,标准文件,文件的操作步骤,文件的操作,C语言的输入输出函数库中提供了大量的函数,用于完成对数据文件的建立、数据的读写、数据的追加等操作。 程序中调用这些函数时,须先用include命令包含stdio.h文件。,文件打开函数 常用的调用形式 FILE *fp; fp 文件名, 文件使用方式; 文件名需要打开的文件名称字符串。 文件使用方式是具有特定含义的符号。 函数功能 按指定的文件使用方式打开指定的文件。 若文件打开成功,为该文件分配一个文件缓冲区和一个FILE类型变量,返回一个FILE类型指针; 若文件打开失败,返回NULL。,打开文件文件的三种基本使用方式,iffp “filename“, “r“ NULL printf ”Cannot open file.n”; exit0; 检查以只读方式打开文件名为filename的文件是否成功。 exit函数的作用结束程序的执行,并将实参0作为函数返回值传给操作系统。,检查文件打开操作是否成功,文件关闭函数fclose 常用的调用形式 FILE *fp; fclose fp ; fp已经打开的文件指针。 函数功能 关闭fp指定的文件,释放该文件的缓冲区、FILE类型变量及文件指针。 若文件关闭成功,则返回0; 若文件关闭失败,则返回非0值。,文件的关闭,字符输出函数fputc 或putc 常用的调用形式 FILE *fp; fputc ch,fp ; ch需要输出的字符,可以是字符常量或字符变量; fp文件指针变量。 功能 将一个字符(ASCII码)写入到fp所指向的文件(该文件必须是以写或读写方式打开的)中。 若输出操作成功,函数返回写入的字符;否则,返回EOF。,文件的读写,系统定义的文本文件结束标志,其值为 -1。,字符输入函数fgetc 或getc 常用的调用形式 FILE *fp; chfgetcfp ; ch可以是字符变量或整型变量; fp文件指针变量。 功能 从fp所指向的文件(该文件必须是以读或读写方式打开的)中读取一个字符。 若输入操作成功,函数返回读入的字符; 若文件结束或输入操作失败,则返回EOF。,文件的读写,利用fputc和fgetc函数建立一个文本文件,并显示文件中的内容。,文件的字符输入输出函数示例,include main FILE *fp; /* 定义一个文件指针变量fp */ int c; /* c为存放字符的变量 */ char filename40; /* filename用于存放数据文件名 */ printf“filename “; /* 提示输入磁盘文件名 */ getsfilename; if fpfilename,“w“NULL printf“Cant open the sn“, filename; exit0; ,测试打开文件是否成功,文件的字符输入输出函数示例,while cgetchar EOF /*键盘文件结束标志输入Ctrlz,显示Z后回车*/ fputcc, fp; /* 将键盘输入的字符写到文件中 */ fclosefp; /* 建立文件结束,关闭文件 */ printf“outfilen“; fpfilename,“r“; /* 以读方式打开文本文件 */ while cfgetcfpEOF /* 未读到文件结束标志时 */ putcharc; /* 在显示器显示读出的字符 */ fclosefp; /* 读文件结束,关闭文件 */ ,文件结束测试函数 格式 FILE *fp; feoffp; fp文件指针变量。 功能 测试fp所指向的文件是否已读到文件尾部。 若该文件没有结束,则返回0; 若文件结束,则返回非0值。,如何判断文件是否结束,对文本文件进行读操作时,例如fgetc 返回EOF,即可作文件结束处理。但在二进制文件中-1是合法数据,所以系统提供了一个适用对象更普遍的文件结束测试函数feof。,例复制一个磁盘文件。,文件结束函数示例,include main FILE *infp,*outfp; char infile40,outfile40; int ch; printf“ filename“; scanf“s“,infile; printf“output filename“; scanf“s“,outfile; ifinfpinfile,“r“NULL /* 打开源文件 */ printf“infile open error.n“; exit0; ifoutfpoutfile,“w“NULL/* 打开目标文件 */ printf“outfile open error.n“; exit0; chfgetcinfp; /* 从源文件中读一个字符 */ whilefeofinfp /* 源文件未读完 */ fputcch, outfp; chfgetcinfp; /* 复制文件 */ fcloseinfp; fcloseoutfp; ,字符串输出函数 格式 FILE *fp; str, fp ; str需要输出的字符串,可以是字符串常量或字符串指针; fp文件指针变量。 功能 将字符串(不包括字符串结束标志0)写到文件指针fp所指向的文件中。 若输出操作成功,返回非0值; 若输出操作失败,则返回0。,读写字符串,与puts函数的功能类似,它们的区别 puts函数能将字符串的结束标志 0 转换成 n 输出,因此字符串在显示器输出后,光标移至下一行; 函数对字符串结束标志 0 的处理仅仅是将其舍去。,读写字符串,字符串输入函数 格式 FILE *fp; fgets str, n, fp ; str字符指针,可以是字符数组名或字符指针变量 n读取字符个数(n-1)。 fp文件指针变量。 功能 将字符串(不包括字符串结束标志0)写到文件指针fp所指向的文件中。 若输出操作成功,返回非0值; 若输出操作失败,则返回0。,应用和fgets函数,建立和读取文本文件。,文件的字符串输入输出函数示例,include “stdio.h“ include “string.h“ main FILE *fp; /* 定义一个文件指针变量fp */ char filename40,str81; printf“filename “; /* 提示输入磁盘文件名 */ getsfilename; if fpfilename,“w“NULL /* 在磁盘中新建并打开一个文本文件,同时测试是否成功 */ printf“Can t open the sn“,filename; exit0; ,文件的字符串输入输出函数示例,while strlengetsstr0 /* 键盘输入空串(即仅输入回车)则输入全部结束 */ str,fp; /* 将键盘输入的字符串写到文件中 */ fputcn,fp; /* 在文件中加入换行符作为字符串分隔符 */ fclosefp; /* 建立文件结束,关闭文件 */ printf“outfilen“; fpfilename,“r“; /* 以读方式打开文本文件 */ while fgetsstr,81,fpNULL /* 从文件读取字符串并测试文件是否已读完 */ printf“s“,str; /* 将文件中读取的字符串分行显示 */ fclosefp; /* 读文件结束,关闭文件 */ ,字符串输出函数 格式 FILE *fp; fprintf fp, 格式控制串,输出项参数表 ; fp文件指针变量。 格式控制串和输出项参数表的规定和使用方法与printf函数相同。 功能 将输出项按指定格式写入fp所指向的文件中。 若输出操作成功,返回写入的字节数; 若输出操作失败,则返回EOF。,文件的格式输入输出函数,与标准文件的格式输入输出函数scanf和printf相对应,文本文件也有格式输入输出函数fscanf和fprintf。它们的功能和格式基本相同,不同之处在于scanf和printf的读写对象是终端(键盘和显示器),fscanf和fprintf的读写对象是磁盘文件。,字符串输入函数 格式 FILE *fp; fscanf fp, 格式控制串, 地址表; fp文件指针变量。 格式控制串和地址表的规定和使用方法与scanf函数相同 功能 按格式控制串所描述的格式,从fp所指向的文件中读取数据,送到指定的内存地址单元中。 若输入操作成功,返回实际读出的数据项个数,不包括数据分隔符。若没有读数据项,则返回0。 若文件结束或调用失败,则返回EOF。,文件的格式输入输出函数,作业复习迎接考试 实验对实验内容进行设计,课后任务,Thank You ,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值