-2

Mac と PC の両方で Fortran 95 プログラムを使用して読み取ろうとしている Notepad++ で作成されたテキスト ファイルを受け取りました。読み取り行は次のとおりです。

 read(lun,'(a)',iostat=io1) input

行の長さがわからないので、入力の長さを 512 と定義しました。メモ帳以外のファイルでは、行末が見つかったときに読み取りが「停止」し、自動的に次のテキスト行に進みます。notepad++ ファイルでは、キャリッジ リターンをスキップして 512 文字を読み取ります。PC で dos エディターを使用してファイルを開くと、改行記号 (ASCII char 13) が表示されますが、行間に改行がなく、すべて互いに追加されています。

ichar(13)andを検索してichar(10)、行の先頭にバックスペースし、次の行に強制的に進めようとしました。で読み込んでformat '(a,/')'いますが、何も動作させることができませんでした。

4

1 に答える 1

0

必要なのはパイプライン型の設計です。基本的なルーチンは getline と呼ばれるもので、改行までの 1 行のデータを取得します。初期化の中で、ファイルをバイナリ ファイルとして開き、たとえば 1024 文字のバッファーを読み取ります。getline が呼び出されるたびに、CR に到達するまで次の文字のロットを返します。文字が足りない場合は、未処理の文字を先頭に移動し、残りの文字を読み込んでください。

これは基本的にコンパイラがどのように機能するかです-トークンのストリームを取得します。これは、あなたの場合、CRで終わる文字列であり、トークンを処理します。

于 2013-05-31T22:32:37.783 に答える