4

我正在使用帕斯卡。处理读取文件时遇到问题。

我有一个带有整数的文件。我读取文件的帕斯卡是:

read(input, arr[i]);

如果我的文件内容是1 2 3好的,但如果是1 2 31 2 3(enter here)(末尾有空格或空行),那么我的 arr 将是1 2 3 0.

4

4 回答 4

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 中工作。

于 2010-01-30T14:43:52.907 回答
1

根据我的记忆read,从字面上将文件读取为字符流,其中有空格和回车符,但我相信在读取整数数组时应该忽略这些。您的文件实际上是否在每个数字之间包含空格字符?

另一种方法是使用readLn并将所需的整数作为新行存储在文件中,例如

1

2

3

于 2010-01-30T00:27:21.593 回答
0

您可以将字符串读入临时字符串,然后在转换之前对其进行修剪。

提及基本知识,例如您正在使用的平台上的哪种类型的 Pascal,以便人们可以给出具体的答案(如文章所述,在许多 Pascal 中没有很好的 OOTB 方式)

于 2010-01-29T23:05:46.403 回答
0

如果我记得有一个称为Val将字符串转换为数字的字符串函数......我对 Pascal 的了解有点生疏(Turbo Pascal v6)

变量
   数:整数;
   str : 字符串;
开始
   str := '1234';
   值(str,数字);(*这是我不确定的行*)
结尾;

希望这会有所帮助,最好的问候,汤姆。

于 2010-01-29T23:24:31.120 回答