读Pascal中的整数

时间:2010-01-29 22:58:56

标签: pascal

我正在使用Pascal。处理阅读文件时遇到问题。

我有一个带整数的文件。我的pascal读取文件是:

read(input, arr[i]);

如果我的文件内容为1 2 3,那么它很好,但如果它是1 2 31 2 3(enter here)(末尾有空格或空行)那么我的arr将为{{ 1}}。

4 个答案:

答案 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;

希望这有帮助, 最好的祝福, 汤姆。