我使用pascal创建了文本文件,在那个文本文件中写了一些带数字的行 现在我正在尝试阅读第一行文本文件和pascal给我错误BAD NUMBER FORMAT。
这是代码:
program Text_files;
{
procedure CreateFile(f1:string);
var f:text;
x,x1,n:integer;
begin
assign(f,f1);
rewrite(f);
n:=1;
for x1:= 1 to 5 do
begin
for x:= 1 to 20 do
begin
write(f,n,' ');
n:=n+1;
end;
writeln(f);
end;
close(f);
end;
}
procedure ReadFile(f1:string);
var f:text;
n:integer;
begin
assign(f,f1);
reset(f);
while not eoln(f) do
begin
read(f,n);
write(n,' ');
end;
close(f);
end;
begin
//CreateFile('NewFile.txt');
ReadFile('NewFile.txt');
Readln;
end.
我尝试将 n 变量更改为字符串类型,并且它可以读取文本文件的第一行,但我希望读取数据为整数类型。 有什么问题?
NewFile.txt DATA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
答案 0 :(得分:1)
打开文本文件时无法读取数字。即使您尝试将其作为记录文件阅读,它也不会起作用,因为这些记录的长度不同。 1只是字节大小而100是三个字节。此外,你有空格,可能还有EOL。 所以,你必须改变
procedure CreateFile(f1:string);
var f:file of integer;
x,x1,n:integer;
begin
assign(f,f1);
rewrite(f);
n:=1;
for x1:= 1 to 100 do
begin
write(f,x1);
end;
close(f);
end;
然后
procedure ReadFile(f1:string);
var f:file of integer;
n:integer;
begin
assign(f,f1);
reset(f);
while not eof(f) do
begin
read(f,n);
write(n,' ');
end;
close(f);
end;
begin
CreateFile('NewFile.txt');
ReadFile('NewFile.txt');
end.
这应该可以解决您的问题。但它有一个缺点:文件内容不是人类可读的。如果由于某种原因这对你很重要,你必须以艰难的方式去做。即保留您的CreateFile版本并仅重写ReadFile
procedure ReadFile(f1:string);
procedure getNumsFromString(s:string);
var
sTmp: string;
iPos: integer;
i : integer;
begin
repeat
iPos=pos(#32,s);
sTmp=copy(s,1,iPos);
s=copy(s,iPos+1,length(s));
i=strtoInt(sTmp);
write(i,#32);
until (length(s)=0);
end;
var f:text;
s:string;
begin
assign(f,f1);
reset(f);
while not eof(f) do
begin
read(f,s);
getNumsFromString(s);
writeln();
end;
close(f);
end;
代码未经测试但您明白了。希望它有所帮助
答案 1 :(得分:-1)
Procedure Reading;
Var
n: longint;
Begin
assign(input,'NewFile.txt');
reset(input);
While not EoF{EoLn} do
begin
read(n);
write(n,' ');
end;
End;