c语言中文件的课件,C语言课件(文件)全解.ppt

C语言课件(文件)全解

文件 第十六讲 文件 文件的概念 文件指针 文件的打开与关闭 文件的读写 文件的定位 程序设计举例 简介 文件 存储在外存储器上的数据集合。 简介 数据的层次结构 简介 C语言的文件处理 C语言把文件看作是一个有序的字节或字符流。 简介 文件的分类(按存储形式分) 文本文件 数据被作为字符,并以字符的二进制编码形式保存。 举例 简介 文件的分类(按存储形式分) 二进制文件 以数据在内存中的二进制形式保存。 举例 简介 文件的读写 缓冲文件系统 系统在内存中开辟一块缓冲区以便慢速的外设与其成块地进行数据交换。 向磁盘(文件)输出数据: 数据→缓冲区,装满缓冲区后→磁盘文件。 从磁盘(文件)读入数据: 先一次性从磁盘文件将一批数据输入到缓冲区, 然后再从缓冲区逐个数据读入到变量。 文件指针 文件指针(指向文件的指针) 缓冲文件系统为每个使用的文件在内存中开辟一存储区存放其相关信息,这些信息用一个结构体变量保存,该结构体类型的名字是 FILE。 程序通过 FILE类型指针建立和文件的联系,进行关于文件的一切操作。 定义形式: FILE *指针变量名; 举例: 定义了一个结构体FILE类型的指针变量:fp。 文件的打开 打开文件 方法: 为了打开一个文件,首先要为该文件定义一个文件类型指针; 然后用C语言提供的fopen()函数打开文件。 fopen函数有两个参数: “文件名”与“文件使用方式”。 它们均是字符串。 一般形式: 文件的打开 打开文件 文件使用方式 文件的打开 打开文件 举例 其意义是在当前目录下打开文件filea.dat,文件的使用方式为“只读”,并使fp指向该文件。 举例 其意义是打开c盘根目录下的文件fileabc.dat,这是一个二进制文件,只允许按二进制方式进行读操作。 两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。 文件的关闭 关闭文件 使用fclose()函数。 一般形式: fclose(文件指针); 举例 将fp指向的缓冲区中的数据存放到外存储器的文件中,然后释放该缓冲区,使文件指针变量不再指向与该文件对应的FILE结构,从而断开与文件的关联。 操作正常返回0,否则返回EOF(是在stdio.h文件中定义的符号常量,值为-1)。 文件操作 文件操作的一般步骤 文件的读写 C语言支持两种读写文件的方式 顺序读写 从文件中一个接一个地读写数据,仅当读写了前一个数据后,才能读写下一个数据。 在读写数据后,文件位置指针自动跳到下一个读写位置。 标准输入输出只能进行顺序读写。 随机读写 从文件中读写数据时可不考虑数据在文件中的位置,可以在文件的任何位置读写。 在读写数据前,需要将文件位置指针移到读写位置。 当文件以读或写方式打开,文件位置指针设置在文件头,若文件以附加方式打开,位置设置在文件末尾。 字符的读写 读字符 fgetc()函数 从指定文件读入一个字符,该文件必须是以读或读写方式打开。 返回值: 调用成功时返回读入的字符; 文件结束时返回文件结束符EOF。 举例 表示从文件指针变量fp指向的文件中读出一个字符,赋给字符变量ch 字符的读写 文件位置指针 文件型数据结构中,用文件位置指针指向当前对文件进行读写操作的位置。 在文件打开时,该指针总是指向文件的第一个字节。读写文件时,每读写一个字符后,该位置指针的值会自动加1,指向下一个字符。 改变位置指针的值,也就改变了下一次读写操作在文件中执行时的位置。 字符的读写 文件结束 问题 使用fgetc()函数,文件结束时返回文件结束符EOF,其值为-1。这在对文本文件操作时不会产生问题。但对二进制文件进行读操作时,由于-1是二进制数的合法值,故将影响文件数据的读取。 为解决此问题,ANSI C提供了专门判断文件结束的函数feof()。 feof()函数 feof(文件指针); 判断文件位置指针是否已至文件尾 返回值: 函数返回值为1时表示已至文件尾部; 为0时则还未到文件结束处。 字符的读写 写字符 fputc()函数 fputc(字符量,文件指针); 将一个字符写到磁盘文件上去 返回值: 调用成功时返回输出的字符; 失败时返回EOF。 举例 表示向文件指针变量fp指向的文件写入一个字符’a’。 案例分析:字符的读写 问题 打开“c:\infile.c”文件,然后将其复制到“c:\outfile.c”。 源代码 案例分析:字符的读写 源代码 字符串的读写 读字符串 fgets()函数 fgets(字符数组名, n, 文件指针); 从指定文件读入n-1个字符到字符数组,最后加一个‘\0’结束符。在读完n-1个字符之前遇到换行符或文件结束符EOF,读入即结束。 返回值:字符数组的地址。 举

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值