我正在使用Pascal。处理阅读文件时遇到问题。
我有一个带整数的文件。我的pascal读取文件是:
read(input, arr[i]);
如果我的文件内容为1 2 3
,那么它很好,但如果它是1 2 3
或1 2 3(enter here)
(末尾有空格或空行)那么我的arr将为{{ 1}}。
答案 0 :(得分:1)
从我记得read
字面上读取文件为字符流,其中有一个空格和回车符,但我相信这些应该在读入整数数组时被忽略。您的文件实际上是否在每个数字之间包含空格字符?
另一种方法是使用readLn
并将所需的整数存储为文件中的新行,例如
1
2
3
答案 1 :(得分:1)
我在Delphi 2009控制台应用程序上测试了这个问题。像这样的代码
var
F: Text;
A: array[0..99] of Integer;
I, J: Integer;
begin
Assign(F, 'test.txt');
Reset(F);
I:= -1;
while not EOF(F) do begin
Inc(I);
Read(F, A[I]);
end;
for J:= 0 to I do write(A[J], ' ');
Close(F);
writeln;
readln;
end.
完全按照你所写的方式工作。可以使用跳过所有空白字符的SeekEOLN函数来改进它;下一个代码不会产生错误的额外零:
var
F: Text;
A: array[0..99] of Integer;
I, J: Integer;
begin
Assign(F, 'test.txt');
Reset(F);
I:= -1;
while not EOF(F) do begin
if not SeekEOLN(F) then begin
Inc(I);
Read(F, A[I]);
end
else Readln(F);
end;
for J:= 0 to I do write(A[J], ' ');
Close(F);
writeln;
readln;
end.
由于所有员工都只是Delphi的遗产,我认为它必须在Turbo Pascal中有效。
答案 2 :(得分:0)
你可以在转换它之前将字符串读入临时字符串然后trim。
在你使用什么平台上提到什么类型的Pascal这样的基础知识并没有什么害处,以便人们可以给出一个特定的答案(正如文章所指出的,在许多帕斯卡中没有很好的方式OOTB)
答案 3 :(得分:0)
如果我记得有一个名为Val
的字符串函数将字符串转换为数字......我对Pascal的了解有点生疏(Turbo Pascal v6)
var num : integer; str : string; begin str := '1234'; Val(str, num); (* This is the line I am not sure of *) end;
希望这有帮助, 最好的祝福, 汤姆。