程序:
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;
,则可行。据我所知,它读取数字像字符串。怎么可能,我以前从未体验过。上帝,我会自己开枪。
答案 0 :(得分:0)
这就是我的想法
您正在尝试将'yhgf'读入整数(gr_sk),因此在读取读取时会抛出错误,因为'yhgf'无法转换为整数。
你应该怎么做?
好吧,我认为您可以将其读入字符串,验证它是一个数字,然后将其转换为整数。坦率地说,我不记得Pascal的做法。谷歌搜索后,发现val procedure。
Val转换整数或实数 由...表示的数字 字符串Source和中的字符 将它放入x。
答案 1 :(得分: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 }
...
答案 2 :(得分:0)
更改
read(c, A[id].name);
到
readln(c, A[id].name);
无论如何,我会朝那个方向搜寻问题;即不读中国领导人。 (CR和LF)
如有疑问,请执行读取(f,)并将一些读取字符的ORD()写入屏幕