1

程序:

  program s;

  type info = record
                    name, surname: string;
                    min, sek: integer;
              end;

  type arrays = array[1..50] of info;

  var c, b: text;
  A: arrays;
  gr_sk,
  grup_dal: integer;

  begin

  assign(c, 'info.txt'); reset(c);
  read(c, gr_sk);
  read(c, grup_dal);
  id := 1;

  read(c, A[id].name);
  read(c, A[id].sek);

  close(c);

end.

info.txt 文件:

3
4
yhgf
4

请告诉我这有什么问题。它说我猜第 19 行的数字格式不好。

如果我更改min, sek: integer;为,min, sek: string;那么它可以工作。据我了解,它读作像字符串一样的数字。怎么可能,我从来没有经历过。天啊,我会自己开枪的。

4

3 回答 3

0

这就是我的想法

您正在尝试将“yhgf”读入整数(gr_sk),因此在读取时会引发错误,因为“yhgf”无法转换为整数。

你该怎么办?

好吧,我认为您可以将其读入字符串,验证它是否为数字,然后将其转换为整数。坦率地说,我不记得帕斯卡的做法。谷歌搜索后,找到val procedure

Val 转换由字符串 Source 中的字符表示的整数或实数,并将其放入 x 中。

关于字符串函数/过程的一些提示:

于 2010-05-16T16:56:23.863 回答
0

我有很多年使用旧的Pascal(现在我使用 Delphi),我认为你c错误地使用了你的变量。无论如何,在 Pascal 中,您可以声明file变量并在其上关联记录类型。

例子:

  type info ...

  var f: file info; { <-- here }
  ...

  begin
     assign(f, 'info.txt');
     reset(f);
     id := 1;
     read(f, A[id]);
     close(f);
  { now A[1] should contain file data }
  ...
于 2010-05-16T17:12:07.247 回答
0

改变

read(c, A[id].name);

readln(c, A[id].name);

无论如何,我会朝那个方向搜索问题;即不读取行分隔符。(CR 和 LF)

如有疑问,请执行 read(f,) 并将一些读取字符的 ORD() 写入屏幕

于 2010-05-17T11:22:36.893 回答