读取()不起作用

Read() doesn't work

程序读取 (s2) 不起作用

var
  s1, s2: string;
  h1, m1: integer;
begin
  read(s1);
  h1 := Strtoint(s1[1:3]);
  m1 := StrtoInt(s1[4:6]);
  read(s2);
  write(h1, m1);
end.

编译看起来像这样

12:25
1225

它应该是这样的

12:25
(asking s2)
1225

您的变量 s1s2 被声明为字符串,它们可以包含用户可以在键盘上键入的任何字符,以及任意数量的字符。那么,您如何想象当用户按下一个键时,程序如何判断它应该是 s1 还是 s2 的一部分?答:不能。

要使您的代码正常工作,请使用 readln 而不是 read。这样,当 readln 执行时,用户必须按 Enter 告诉程序完成等待更多字符的输入。

请注意,某些 Pascal 实现允许您这样写

readln(i1, i2)

其中 i1i2 是整数。如果用户键入由 space 或 Tab 分隔的两个整数,这将起作用,因为这样阅读代码可以知道 i1 和 [= 的输入在哪里结束20=]开始。

另请注意

readln;

本身等待用户按 Enter,这是让程序进入 "pause".

的基本方法