我正在使用帕斯卡。处理读取文件时遇到问题。
我有一个带有整数的文件。我读取文件的帕斯卡是:
read(input, arr[i]);
如果我的文件内容是1 2 3
好的,但如果是1 2 3
或1 2 3(enter here)
(末尾有空格或空行),那么我的 arr 将是1 2 3 0
.
我正在使用帕斯卡。处理读取文件时遇到问题。
我有一个带有整数的文件。我读取文件的帕斯卡是:
read(input, arr[i]);
如果我的文件内容是1 2 3
好的,但如果是1 2 3
或1 2 3(enter here)
(末尾有空格或空行),那么我的 arr 将是1 2 3 0
.
我已经在 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 中工作。
根据我的记忆read
,从字面上将文件读取为字符流,其中有空格和回车符,但我相信在读取整数数组时应该忽略这些。您的文件实际上是否在每个数字之间包含空格字符?
另一种方法是使用readLn
并将所需的整数作为新行存储在文件中,例如
1
2
3
您可以将字符串读入临时字符串,然后在转换之前对其进行修剪。
提及基本知识,例如您正在使用的平台上的哪种类型的 Pascal,以便人们可以给出具体的答案(如文章所述,在许多 Pascal 中没有很好的 OOTB 方式)
如果我记得有一个称为Val
将字符串转换为数字的字符串函数......我对 Pascal 的了解有点生疏(Turbo Pascal v6)
变量 数:整数; str : 字符串; 开始 str := '1234'; 值(str,数字);(*这是我不确定的行*) 结尾;
希望这会有所帮助,最好的问候,汤姆。