分享
 
 
 

有类型文件

王朝百科·作者佚名  2009-11-23
窄屏简体版  字體: |||超大  

一、有类型文件的定义

有类型文件中的元素可以是混合型的,并以二进制格式存贮,因此有类型文件(除了字符类型文件,因为它实质上是文本文件)不象文本文件那样可以用编辑软件等进行阅读和处理。

有类型文件的类型说明的格式为:

类型标识符=File of 基类型;

其中基类型可以是除了文件类型外的任何类型。例如:

file1=file of integer;

file2=file of array[1..10] of string;

file3=file of set of char;

file4=file of real;

file5=file of record;

name:string;

course:array[1..10] of real;

sum:real;

end;

等等,其中file2,file3,file5中的数组、集合、记录等类型可以先说明再来定义文件变量。

例如:

var

f1:file1;

f2,f3:file3;

f4:file5;

与前面所有类型说明和变量定义一样,文件类型说明和变量定义也可以合并在一起,例如:

var

f1:file of integer;

f2,f3:file of set of char;

file4=file of record;

name:string;

course:array[1..10] of real;

sum:real;

end;

Free Pascal对有类型文件的访问既可以顺序方式也可以用随机方式。

二、有类型文件的建立

有类型文件的建立只能通过程序的方式进行,其操作步骤与文本文件程序方式建立的步骤相仿,不同之处:(1)有类型文件的定义与文本文件的定义不同;(2)有类型文件可以利用seek命令指定指针随机写入。

三、有类型文件的访问

有类型文件访问的操作步骤与文本文件的程序访问操作步骤相仿,区别之处:(1)有类型文件的定义与文本文件的定义不同;(2)有类型文件可以利用seek命令访问文件记录中的任一记录与记录中的任一元素。

对有类型文件的写操作步骤为:

assign(f,str);

rewrite(f);

write(f,var表);

close(f);

对有类型文件的读操作步骤为:

assign(f,str);

reset(f);

read(f,var表);

close(f);

四、例题分析

例11.5 设有一个整数文件f,现要求将其中的偶数乘以2,奇数减1,形成一个偶数文件。

分析:有两种方法,一是另外生成一个偶数文件g,一是将生成的偶数文件仍然保存在原文件f中,下面分别给出这两种方法的程序。

program exp11_5_1(input,output); { 生成一个偶数文件g }

var f,g : file of integer;

x:integer;

begin

assign(f,’input.txt’);

assign(g,’output.txt’);

reset(f);

rewrite(g);

while not eof(f) do

begin

read(f,x);

if odd(x) then x:=x-1

else x:=x+x;

write(g,x);

end;

close(f) ;close(g);

end.

program exp11_5_2(input,output); { 将生成的偶数文件仍然保存在原文件f中 }

var f : file of integer;

x,i:integer;

begin

assign(f,’input.txt’);

reset(f);

i:=1; { 人为设定一个写指针 }

while not eof(f) do

begin

read(f,x); { 系统指针作为读指针 }

if odd(x) then x:=x-1

else x:=x+x;

seek(f,i); { 将写指针定位到目标位置 }

write(f,x);

i:=i+1;

end;

close(f);

end.

例11.6 设有两个已经排好序(从小到大)的整数文件t1和t2,请编程将t1和t2合并成一个文件t,使得合并后的文件也是有序的(从小到大)。

program exp11_6(input,output);

type intfile = file of integer;

var t1,t2,t:intfile;

procedure paixu(var f,g,h:intfile);

var m,x,y:integer;

begin

reset(f) ;reset(g) ;rewrite(h) ;

m:=0; { m为初始标志 }

while (not eof(f) and not eof(g)) do

begin

if m=0 then begin read(f,x) ;read(g,y) ;m:=1; end;

if x<y then begin write(h,x);read(f,x); end

else begin write(h,y);read(g,y); end;

end;

while not eof(f) do begin read(f,x);write(h,x); end;

while not eof(g) do begin read(g,y);write(h,y); end;

close(f);close(g);close(h);

end;

begin { main }

assign(t1,’input1.txt’);

assign(t2,’input2.txt’);

assign(t, ’output.txt’);

paixu(t1,t2,t);

end.

注意:类型文件用写字本或TYPE命令打开看,全是乱码(二进制代码)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有