4

Pascalを使用しています。ファイルの読み取りに問題があります。

整数のファイルがあります。ファイルを読むための私のパスカルは次のとおりです。

read(input, arr[i]);

私のファイル1 2 3の内容が良い場合は良いですが、そうである1 2 3場合1 2 3(enter here)(最後にスペースまたは空の行があります)、私のarrはになります1 2 3 0

4

4 に答える 4

1

Delphi2009コンソールアプリケーションで問題をテストしました。このようなコード

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の遺産にすぎないので、TurboPascalで機能する必要があると思います。

于 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...パスカルに関する私の知識は少しさびています(Turbo Pascal v6)

変数
   数値 : 整数;
   str : 文字列;
始める
   力:= '1234';
   ヴァル(文字列、数値); (*これは私がよくわからない行です*)
終わり;

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2010-01-29T23:24:31.120 に答える