• ベストアンサー

Fortranで1行飛ばして読み込む方法

例えば次の内容が書かれているテキストファイル(data.txt)があるとします. ------------data.txt------------ time temperature 1.000E+00 5.632E+02 -------------------------------- このdata.txtに書いてある2行目の値をfortranを用いて読み込もうとすしたいのですが, fortranで open(100,file='data.txt') read(100,*) time, temperature と書くと, data.txtの1行目の'time temperature'の文字を読み込もうとし,当然エラーが出てしまいます. 読み込みたいのはdata.txtの2行目の数値のみなのですが, その方法がわかりません. 読み込む方法を教えていただけないでしょうか.

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7995/17093)
回答No.2

読み飛ばし行が1行と分かっている状況なら open(100,file='data.txt') read(100,*) read(100,*) time, temperature が簡単でしょう。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

format をうまく使えばいいような気がする. / だったかな?

関連するQ&A

  • fortran77で複数のファイルの読み込み

    fortran77で複数のファイルの読み込み 現在fortran77のプログラムを勉強しております。 ファイルが複数あり、すべてのファイルを読み込みたいのですが、ファイルの数がたくさんあるため、プログラムの行数が多くなってしまいます。 do ループで次々とファイルを開くプログラムを考えているのですが、思いつきません。 どなたか考え方でもいいので、教えてください。 ちなみに私が考えたプログラムは、 open(10,file='C:\FORTRAN\100.txt',status='old') open(11,file='C:\FORTRAN\121.txt',status='old') open(12,file='C:\FORTRAN\144.txt',status='old') open(13,file='C:\FORTRAN\169.txt',status='old') open(14,file='C:\FORTRAN\196.txt',status='old') open(15,file='C:\FORTRAN\225.txt',status='old') ・・・。 これを do ループで次々に開くことを考えると、 character*3 A(10) do 100 i=1,10 A=i*i open(i,file='C:\FORTRAN\A.txt',status='old') 100 continue ・・・ みたいな感じです。 ' 'の中の一部だけを変えたい場合のcharacter 文の使い方がいまいちよく分かりません。

  • fortranでテキストファイルを読み込む

    fortranでプログラムを作っています。 普通にテキストファイルの文字列を読み込むことくらいは出来ます。 そこで、質問です。 あるテキストファイルがあります。 これは行数が何行あるかわからないとします。 しかし、一行の形式はすべて同じです(例えば、3つの数字とか)。 そこで、ループでこのファイルをすべて読み込み、 行が無くなったらREADを終了する方法を知っている方がいたら教えて下さい。 ちなみにfortranは77もしくは95です。 わかりづらくて済みません。 よろしくお願いいたします。

  • fortran g95を使ってBMPを処理したい

    以前XP環境でVisual Fortran(VF)を使ってBMPファイルを読み込むプログラム使っていました. PCがWin7になった為,FreeのFortran g95を使用して同様の処理を行いたいのですが,上手くできません.例えば”test.bmp”と言う8bitのファイルを読み込みたいとしたとき, VFでは character*1078 temp integer*1 data open(10,file='test.bmp',form='binary') read(10)temp read(10)data このときwrite(*,*)dataは133とします. g95では"binary"が使用できず, character*1078 temp chracter*1 data open(10,file='test.bmp',form='formatted') read(10,*)temp read(10,*)data data2=ichar(data) write(*,*)data2は32となってしまいます. 画像の輝度は133で,VFで読み込んだ値となります. 上のプログラムで何を直せば g95でも正しい輝度情報を読めるのでしょうか? どうぞ宜しくお願いします.

  • fortranについて

    fortranでコンパイルしようとすると、 READ(1,FILE='syoki.txt') X0(I),Y0(I) ^ Invalid form for READ statement at (^) とエラー?が出てしまうのですが、原因としてどのようなことが考えられるでしょうか。 どなたかお願いします。

  • fortranでプログラムを作りたいのですが

    今学校で、txtファイルの数値データを数式処理しているのですが、そのtxtファイル数が多く、一つ一つエクセルで開いてやるのがとても面倒くさくて(エクセルの中ではマクロで処理しているが)困ってます。  そこでfortranでプログラミングして処理しようかと思っているのですが、それに関してわからない事があります 1.fortranのopen文はどんなファイルでも開けるか? 2.またfortranで開いて、計算処理できるファイルはtxt datなどのファイルしかないのか? 3.ファイル名が1~100のように順番になっている時1~100まで順番で開いて、それぞれに計算処理出  来るようなプログラムは可能か?

  • fortranでテキストデータ読込できない。教えて下さい。

    fortran95(g95)を使用しています。 以下のようなテキストファイルを読み込みたいのですができません。 a.txtの中身 ------------------------- 0.000000 -11084.0 1.940757E-03 0.000000 -11059.6 6.324515E-04 0.000000 -11035.2 2.825573E-02 0.000000 -11010.7 1.419570E-03 -------------------------- ----と-----の間のデータです。 最初に空白が3つ 次に8桁の実数 次に空白が1つ 次に8桁の実数(マイナス記号含む) 次に空白が2つ 最後に12桁の実数(指数含む) となっています。    real :: z(3,4)   open(1,FILE='a.txt')   do j = 1, 4 read(1,1000,end=99)(z(k,j), k=1,3) enddo 99 continue close(1) 1000 format(F11.6,F9.1,E14.6) 上記のようなコードを作成しています。 do j = 1,4 write(*,*) (z(k,j),k=1,3) enddo 上記のように出力させると 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. となります。 よくわからない。 分かる方、教えて下さい。 お願いします。

  • FORTRAN 行数の分からないテキストデータの読み込み

    FORTRANで、テキストデータを読み込む際、読み込みたいデータの行数が あらかじめ分からない場合、どのように書けばいいのか分からずこまって おります。たとえば、データ数の行数が、 a、a1、a2・・・ b、b1、b2・・・ c、c1、c2・・・ d、d1、d2・・・ e、e1、e2・・・ などで、5行と分かっている場合は、 do=1,5 read(*,*)・・・ ・・・ と書けばいいことは分かるのですが…。 データの行数が予め分からなくても、すべてのデータを読み込ませる方法 (書き方)についてよろしければご教授ください。

  • fortran90

    fortran90 現在 fortran90 で計算プログラムを作っております。 プログラムはかけたのですが、実行画面にエラーが出ます。 解決方法が分かりません。どなたか分かる方いらっしゃいますか。 プログラム implicit real*8 (a-h,o-z) parameter(n=900) open (1,file='004.txt',status='old') do 10 i=1,n read (1,*,end=11)xx,yy,zz,ww theta=acos(zz) phi1=acos(xx/sqrt(1-zz*zz)) phi2=asin(yy/sqrt(1-zz*zz)) write(*,*)theta,phi1,phi2 10 continue 11 end プログラム内容 あるフォルダーに保存してあるテキストファイルから4×4行列のデータを読み込み、そのデータからθの値とφ1、φ2のアタを求めるプログラムです。 実行分のエラー画面には、 acos: DOMAIN error です。

  • FORTRANのプログラム

    今、実験の解析を行っています。 読み込みたいテキストファイルには -1,0.4 0,0,233 -1,0.9 ・・など左側には-1か0のどちらかがあります。 これを -1,0.4 -1,0.9 を含むファイルと 0,0.0233 を含むファイルの二つに分けたいのです。 今プログラムを作っているのですがどうしてもできません。 どうしたらいいのでしょうか? program dat real x(10), y(10) open(7,file='test.txt') do i=1,10 read(7,*,end=200) x(i),y(i) end do do j=1,10 if(x(j).eq.0.0) then open(8,file='aftest1.txt') write(8,*) y(j) else open(9,file='aftest2.txt') write(9,*) y(j) end do close(8) close(9) 200 close(7) end

  • FORTRANの質問です

    今、実験の解析を行っています。 読み込みたいテキストファイルには -1,0.4 0,0,233 -1,0.9 ・・など左側には-1か0のどちらかがあります。 これを -1,0.4 -1,0.9 を含むファイルと 0,0.0233 を含むファイルの二つに分けたいのです。 今プログラムを作っているのですがどうしてもできません。 どうしたらいいのでしょうか? と質問しました。説明不足気味だったので、追加で説明させていただきます。 データの数はかわります。5個だったり、900個だったりします。 この数はわかりません。 program dat real n(10), y(10) write(*,*)'k=' read(*,*)k open(7,file='test.txt') do i=1,k read(7,*,end=200) n(i),y(i) end do 200 close(7) open(8,file='aftest1.txt') open(9,file='aftest2.txt') do j=1,k if(n(j).eq.0) then write(8,*) y(j) else if(n(j).eq.-1) then write(9,*) y(j) end if end do close(8) close(9) end と書いたのですがデータの数と繰り返しの数が一致しないと、出力されません。 いちいちファイルをみるのは面倒なので、なんとか したいのですが

専門家に質問してみよう