回 帖 发 新 帖 刷新版面

主题:有两个题不懂,快教教我!!!!!!

本人上初一,刚学文件操作,现在有两个题不懂,请大家教一下。
1、对比两文件是否相同,是则打ok,否则打not.
看看我的:
program compare;
var
   f1,f2:text;
   chr1,chr2:char;
   fn1,fn2:string;
begin
read (fn1,fn2);
assign (f1,fn1);
assign (f2,fn2);
reset (f1);
reset (f2);
repeat
read (f1,chr1);
read (f2,chr2);
until (chr1<>chr2) or ((eof(f1)) and (eof(f2)));
close (f1);
close (f2);
if chr1<>chr2 then write ('not') else write ('ok');
end.
但是我不管fn2输了什么,watch中的fn2总是一个空格,不知道怎么回事。
2、把一个文件的a全换成b.
我的程序:
program a2b;
var
    inf,outf:text;
    chr:char;
    inn,outn:string;
begin
read (inn);
read (outn);
assign (inf,inn);
assign (outf,outn);
reset (inf);
rewrite (outf);
while not eof(inf) do
begin
read (inf,chr);
if chr='a' then write (outf,'b') else write (outf,chr);
end;
close (inf);
close (outf);
end.
结果调试时,只能输入inn,outn无法输入,用step over看时,读完inn就跳到后面去了,真不知道为什么。
请大家快给出答案!!!!!

回复列表 (共5个回复)

沙发

真不错,初一就学这玩意儿了,第一个程序的错误我也经常犯,你把几个READ都改成READLN应该就没有问题了.你先试试,对了的话,我再说,因为我也是三脚猫.

板凳


好像还是不行。

3 楼

两个字符串能一起读吗!!!
文件名分开readln就行

4 楼

对啊,两个字符串不能一起读
改read (fn1,fn2);为
readln(fn1);
readln(fn2);
另外第二个程序中,变量chr:char错
chr是pascal中的预定义函数,可将ASC码转为对应字符.
例如:
var a:char;
a:=chr(48);
那么a就为'0'
所以chr不能定义为var中的变量.
前面的
read (inn);
read (outn);
应改为
readln(inn);
readln(outn);
不然就总停在一排读,当然读不出来拉.
你在编译一变,估计就对了.

5 楼


终于成功了,谢谢大家!

我来回复

您尚未登录,请登录后再回复。点此登录或注册