String 如何比较Pascal中的两个字符串?

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:

我有两个字符串,我想知道这两个字符串是否相同。唯一的问题是我用while填充字符串1个字符,所以如果我使用length/ord,它就不能正常工作。我想如果你看到我的代码,你会有一个更容易的助教帮助我,所以我会把它粘贴在这里

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啊,我的编辑是严格格式化的。我没有修改答案。