String 如何比较Pascal中的两个字符串?
我有两个字符串,我想知道这两个字符串是否相同。唯一的问题是我用while填充字符串1个字符,所以如果我使用length/ord,它就不能正常工作。我想如果你看到我的代码,你会有一个更容易的助教帮助我,所以我会把它粘贴在这里String 如何比较Pascal中的两个字符串?,string,pascal,String,Pascal,我有两个字符串,我想知道这两个字符串是否相同。唯一的问题是我用while填充字符串1个字符,所以如果我使用length/ord,它就不能正常工作。我想如果你看到我的代码,你会有一个更容易的助教帮助我,所以我会把它粘贴在这里 var cad1, cad2: string; car: char; icad1, icad2: integer; begin car := 'o'; icad1 := 1; icad2 := 1; write('Write the cad1:
var
cad1, cad2: string;
car: char;
icad1, icad2: integer;
begin
car := 'o';
icad1 := 1;
icad2 := 1;
write('Write the cad1: ');
while (car<>'.') do begin
car := readkey;
cad1 := car;
write(car);
inc(icad1);
end;
car := 'o';
writeln;
write('Write thecad2: ');
while (car <> '.') do begin
car := readkey;
cad2 := car;
write(car);
inc(icad2);
end;
writeln;
end.
var
cad1,cad2:字符串;
car:char;
icad1,icad2:整数;
开始
汽车:=‘o’;
icad1:=1;
icad2:=1;
写('写cad1:');
当(车“.”开始时
car:=读取键;
cad1:=汽车;
写(车);
公司(icad1);
结束;
汽车:=‘o’;
书面语;
写('write thecad2:');
当(车“.”开始时
car:=读取键;
cad2:=汽车;
写(车);
公司(icad2);
结束;
书面语;
结束。
您的代码中有几个问题。例如:行cad1:=car代码>将字符指定给字符串。这意味着结果字符串只包含一个等于car的字符。以前的所有输入都将丢失
输入字符串并进行比较的最简单方法如下:
write('Write the cad1: ');
readln(cad1);
write('Write thecad2: ');
readln(cad2);
write(cad1=cad2);
readln;
你只需要做:
CompareText(cad1, cad2)
如果两个字符串相同,则返回0
您的cad1
和cad2
需要以空字符串开头(例如cad1:='';
),然后在循环时将新字符附加到中的字符串中(例如cad1:=cad1+car;
)。inc(icad1)
甚至无效。不能在Pascal中递增字符串类型。您的应用程序一定有编译错误。除了我先前的建议之外,你还必须去掉这些inc
s。当您按照自己的意愿逐字读入字符串时,您可以使用@asd tm给出的答案对其进行比较。亲爱的@baddger964,您需要强调,建议的CompareText
函数不区分大小写。如果OP不希望这样做,这可能会混淆OP,如果用户希望严格比较字符串而不是字符串中的文本,则可能会给出假阳性结果。@潜伏者如果您喜欢这种比较方式,为什么不在编辑中使用SameText
函数而不是CompareText
?它将为字符串的大小写不敏感比较提供布尔结果。顺便说一下,OP没有说明他需要区分大小写还是不区分大小写的比较。我想,我们不能为他做出决定。所以我建议保留以前编辑的badger964答案。@asd tm这不是我的答案。“我不是建议你这么做的。”潜伏者,我很抱歉。我想可能是你的编辑。我看到了baddger964的主要答案,然后是您编辑的版本。@asd tm啊,我的编辑是严格格式化的。我没有修改答案。