1 / 13

13 、 3 文本文件

13 、 3 文本文件. 文本文件也是一种文件,但是它是日常处理中经常要用到的文件,所以 PASCAL 专门把它专门列出来处理。. 一、 文本文件的特点: 1 、 它的内容全部由 ASCII 码组成,特别适合处理文字信息,不要经过任何转换 就可以直接在屏幕上显示和在打印机上打印,所以一些数据也以文本文件来存储;. 2 、 文本文件存储到硬盘上的时候要经过一个转换过程:存到文件时,系统先把 内存中以二进制形式存放的数据转换为 ASCII 码再存到文件中去 ;读文件中的数 据时就进行相反的过程,先把 ASCII 转换为二进制,再放到内存中去。

zola
Download Presentation

13 、 3 文本文件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 13、3 文本文件 文本文件也是一种文件,但是它是日常处理中经常要用到的文件,所以 PASCAL专门把它专门列出来处理。 一、 文本文件的特点: 1、它的内容全部由ASCII码组成,特别适合处理文字信息,不要经过任何转换 就可以直接在屏幕上显示和在打印机上打印,所以一些数据也以文本文件来存储; 2、文本文件存储到硬盘上的时候要经过一个转换过程:存到文件时,系统先把 内存中以二进制形式存放的数据转换为ASCII码再存到文件中去 ;读文件中的数 据时就进行相反的过程,先把ASCII转换为二进制,再放到内存中去。 ASCII码与二进制的区别,以数字0为例(虽然在计算机中都是0、1): 0的ASCII码是十进制48,存的就是110001。而二进制形式存的是00000。 这样一来对文本文件的操作比对二进制的操作要慢。

  2. 特点3、文本文件是顺序文件,那么对它的操作REWRITE、RESET是有差别的,特点3、文本文件是顺序文件,那么对它的操作REWRITE、RESET是有差别的, REWRITE只能是写,而且如果原文件有数据那么将先全部清除(当然这条命令对 于随机文件也是这样);RESET是读,而且只能读,随机文件RESET也可读可写。 顺序文件不能同时进行读写,所以文本文件不能同时进行读写。 同时进行读写具体是什么意思? 特点4、文本文件与类型文件相比,它是由一些称为记录的行组成,简单的说, 它是分行的,一行称为一个记录。但是类型文件不分行;而且文本文件每一行(记 录)的可由多个数据元素组成,且每个数据元素可以不同类型,但是类型文件所有 的数据元素必须是同一类型(这也是类型文件名称的由来)。

  3. 特点5、文本文件类型变量的定义: VAR 文件变量名:TEXT; {TEXT表示这个变量是文本文件类型} 而类型文件变量的定义是: 文件变量名: FILE OF 基类型 {基类型决定了文件只能存什么类型的数据} 同时注意:在磁盘中文本文件的后缀名是TXT,也就是说所有的文本文件 的写法都是:文件名。TXT。(而TEXT是PASCAL中文本文件类型变量的标识符) 那么与文本文件类型变量相联系的文件都必须是文本文件。 也就是说在ASSIGN过程中要注意这点,例如: ASSIGN(FV,’TABLE。TXT’) 那么TABLE。TXT可以直接显示,TABLE。DAT显示的就是乱码。

  4. 二、文本文件的操作: 前面学过操作步骤对于文本文件也是一样的,因为对文本文件的操作也是文 件操作,如REWRITE、RESET、READ、WRITE和函数EOF()都是一样的,但 要注意一点:文本文件是顺序文件,不能同时进行读写,所以用RESET打开文件时 只能进行读。 PASCAL的标准输入文件INPUT就是文本文件,我们平时写的那些输入语句 如:READ(A,B,C),其实就是READ(INPUT,A,B,C)。只是因为我们 经常要用到这些语句所以系统就简化了,预先为你定义了这个文件变量。 在这里A、B、C三个变量可以不同类型,这就是对文本文件一行的各数据项 可以是不同类型这句话的理解。

  5. 三、READ、READLN、WRITE、WRITELN的具体操作过程:三、READ、READLN、WRITE、WRITELN的具体操作过程: 因为文本文件是以行为记录来存储的,所以READ、READLN、WRITE、 WRITELN这4个命令的操作会不一样,而类型文件存放的时候不分行, READLN、WRITELN这两个命令不能使用。 在文本文件中除了有文件结束符外,还比类型多了一个行结束符,也就是 说每一行都有一个行结束符号,行结束符就是你在键盘上输入的时候按回车产生 的符号。

  6. 那么READ、READLN、WRITE、WRITELN的具体过程是什么呢?那么READ、READLN、WRITE、WRITELN的具体过程是什么呢? 1、 READ/READLN:从文件中读数给变量,使用方法: READ/READLN(文本文件类型变量,变量1,变量2……); 如:READ(F,A,B,C); 2、 WRITE/WRITELN:把变量中的数据存到文件中去,使用方法: WRITE/WRITELN (文本文件类型变量,变量1,变量2……); 如:WRITE(F,A,B,C); 详细过程见书P310。

  7. 四、文本文件专有的操作过程与函数: 1、添加过程:APPEND的使用方法: APPEND(文本文件类型变量); 功能:APPEND过程是以写的方式打开一个已经存在的文件,并且使文 件指针指向文件末尾,那么下次的WRITE(文件类型变量,变量1,变量2……) 这样的操作就是直接在文件末尾添加了,因为此时的文件指针已经指向文件末尾。 以这个过程打开一个文件后就不要再用RESET去打开文件了,因为文件已 经被打开。这样在文件后面添加数据也不用SEEK过程和FILESIZE函数相配合了, 因为文件指针已经指向最后了。 注意:这个过程只能对文本文件操作,而且这是TURBO PASCAL的命令。 并且这个命令同RESET命令一样,指定的文件必须先存在,否则会出错。

  8. 2、函数:EOLN的用法: EOLN(文本文件类型变量); 功能:判断文件指针是否已经指向某一行的结尾,是就返回真,否则就 返回假。 因为文本文件是分行的形式存放数据的,每一行称为一个记录,所以多 了一个这样的函数来判断是否文件指针已经到了一行的结尾。而类型文件不是以 行来存放而是连续存放,所以就没有这个函数。 注意:以上讲的APPEND过程和EOLN函数是文本文件专有的命令。

  9. 五、程序举例: (1)、 例题13、1(P305),将自然数1——10以及他们的平方根写到磁盘文件 里,以文本文件的形式存放。 PROGRAM WFILE; VAR FV:TEXT; I:INTEGER; BEGIN ASSIGN(FV,’TABLE。TXT’); REWRITE(FV); FOR I:=1 TO 10 DO WRITELN(FV,I:2,SQRT9I):8:3); CLOSE(FV) END。 在文本文件的操作里请注意,WRITE各输出项可以有不同类型,也可以是 表达式,就跟我们平时写WRITE语句一样。这与类型文件的WRITE语句不一样。

  10. 程序举例: (2)、 逐行输入文本文件中的数据到屏幕上。(假设文件是10行1列) 分析:数据显示到屏幕上就跟我们把数据显示到屏幕上是一样的,只是这次 数据的来源不是键盘,而是文本文件里的数据。 PROGRRAM WFILE; VAR FV:TEXT; I,J,K:INTEGER; BEGIN ASSIGN(FV,’TABLE。TXT’); RESET(FV); FOR I:=1 TO 10 DO BEGIN READ(FV,J,K);{从键盘接受数据给变量J、K,并把J、K的值送给FV} WRITELN(J:5,K:5) END; CLOSE(FV) END。 因为文本文件存放的是ASCII码,而ASCII码可以直接显示在屏幕上,所以TABLE。TXT文件你 可以直接打开看。

  11. (3)、 由键盘输入若干行文本,并存到文件F1。TXT中。 分析:此程序的关键在于如何把键盘上输入的一行存到文件里时也是一行,另外因为要求是 若干行,所以什么时候结束也是一个要考虑的问题。 首先讲解一下系统的规定,当从键盘上输入一行时会按回车,那么这个时候EOLN函数就为真, 也就是说一行没有输完(即没有按回车)EOLN都为假。另外规定键入CTRL+Z时EOF为真,这个时候 就可以结束文件输入了,利用这两个特性就可以编写如下程序:。

  12. PROGRAM WTEXT; VAR FV:TEXT; CH:CHAR; BEGIN ASSIGN(FV,’F1。TXT’); REWRITE(FV); WHILE NOT EOF DO {从键盘上输入CRTL+Z则EOF就为真,也就是输入结束} BEGIN WHILE NOT EOLN DO {按回车则EOLN就为真,表示一行结束,如果不结束就执行} BEGIN READ(CH);{从键盘读数据到变量} WRITE(FV,CH); {把变量的数据存到与FV相联系的文件里} END; READLN; {表示从下一行开始读,也就是把读的指针指向下一行} WRITELN(FV);{输出一个行结束符到文件里,因为文件里每行都有结束符,同时把 文件指针指向下一行} END; CLOSE(FV) END。

  13. 程序举例1:把数据写到文件中 将自然数1——10以及它们的平方根写到磁盘文件TABLE.txt中。 程序举例2:读文件中的数据。 把上例中TABLE。TXT中的数据读入,显示到屏幕上。 程序举例3:增加数据 通过第一个程序,在文件TABLE。DAT中已经有了自然数1——10以及他们的平 方根,排列的方式是:1、1的平方根、2、2的平方根……。 现在下面的程序实现的功能是:从键盘输入1——10中的任意Y一数,在 文件TABLE。TXT中找到它的平方根,并显示在屏幕上。

More Related