• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Fortranで文字の読み込み&書き込み)

Fortranで文字の読み込み&書き込み

このQ&Aのポイント
  • FORTRANで文字の読み込みと書き込みを行う際に、特定の文字列の一部を抜き出す方法について質問します。
  • 具体的には、「_50」という文字列を「aaaa_50」という文字列から抜き出したいと考えています。
  • これを実現するために、read文とwrite文の間にどのような処理を記述すればよいのかを教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.1

>parameter A >read (10,*) A <-- Aは「aaaa_50」という文字列。 >write (10,*) A <-- このままでは「aaaa_50」を書き込みます まず、parameter分で宣言した領域には、一般のFORTRANコンパイラだと読み込めないはず また、通常は読み込んだ順編成のデバイス10にはそのままだと(rewindやreopenすれば別ですが)書きこめないと思います(コンソールは別なので、10をCONデバイスで開けば可能かな) また、"aaaa_50"のaaaaの部分は必ず4桁なのでしょうか、それとも、アンダースコア"_"をサーチしてそれ以降を生かしたいのかで話は変わります。 固定で良いなら、部分文字列を使えば十分でしょう。 charater A*7 read (*,*) A write (*,*) A(5:7) あるいは read (*,"(4x,a3)") A write (*,*) A のようにaaaaの部分を飛ばしてしまえばよいのでは _で判断するのであれば、一行では無理

hinekichi
質問者

お礼

早速ありがとうございます。 > "aaaa_50"のaaaaの部分は必ず4桁なのでしょうか、 aaaaは4桁、_のあとに文字or数字、といった固定の形式です。 「_」で判断する必要もありません。 ご教示いただいた「(5:7)」ですが、これが私がこの処理で使いたかったものです。 思い出すことが出来ました。 断片的に思い出すことが出来たその部分文字列なのですが、 writeのあとに(5:7)を入れても書き出せません。 なぜでしょうか・・・? たびたびすみません、宜しくお願い致します。

hinekichi
質問者

補足

※先にお礼に書き込んでしまい「できない」としていましたが、 出来ました。 私がアホでした。 部分文字列ですべて解決しました。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PowerShellでの文字列置換ができない

    PowerShellで「\」を含む文字列が変換できません。たぶん正規表現とかで問題があると思うのですが・・・ あとテキストファイル内の文字列置換で指定された文字列がある行があった場合、その行を削除するといったことは出来るのでしょうか? 詳しい方いらっしゃいましたらよろしくお願いいたします。 <テキスト> BBBB AAAA NNNN AAAAあああA NNNN AAAA <検索文字列> あああ ※行内に「あああ」をみつけたらその行を丸ごと削除したい・・・

  • FORTRAN90

    fortran90で、ファイル出力をフォーマット付きで行いたいのですが、 write(unit,****) のような文で、****の部分のフォーマット指定を マニュアルで入力するのではなく、その場に応じた形で 指定する方法はありますでしょうか? character変数の文字にフォーマット指定の文字列、例えば六つの実数を横一列に書き出す場合を想定して write(char,"(A,I1,A)")"'(",Int,"D13.5)'" とし、 write(unit,char)x,y,z,w,s,t などとするのはできませんでした。 ここでいうintの部分を自動的に変えれるようにしたいのですが 何か策はありますでしょうか? わかりにくい説明ですみませんが宜しくおねがいします。

  • fortranのwrite文について

    fortranで数値計算をしています。 計算結果をdatファイルに出力する際、 長い変数名の数値を30列(1列は1000行以上)以上にわたって出力したいことがあります。 現在は、それぞれの変数名を横並びにプログラムに書き、 かつ、1行あたりの文字列の制限もあるので、 &記号を使って、無理やり出力しています。 具体的には、 do i=1,1000,1 write(1000,*)aaaaaaaaaaaaaaaa(i),& &bbbbbbbbbbbbbbbb(i),& &cccccccccccccccc(i),& &dddddddddddddddd(i),& ........ end do という形です。 もっとスマートにかけないでしょうか?

  • Fortranでのファイルからの読み込み

    Fortranでのファイルからの数値の読み込みについてお尋ねします。 NAGのFortran解説サイトでは以下のような説明がありました。 ----- write (10,*) ((a(i,j),i=1,3),j=1,2) ! DO 形反復を用いて配列を全体書き出す例 write (10,*) a ! 配列全体を指定。現在はこの書き方が推奨されています ----- ここで下側が推奨されるとのことですが、下側はファイルの構造と格納される配列の構造を明示せず、上側はどこに格納するのか明確になっています。上側は相手(データ構造)が変わった場合、それに応じた読み込みができるという意味で対応の幅が広いように思うのですが、どうして下側が推奨されるのでしょうか。下側は場合によっては誤解したまま進んでしまいそうですが。  

  • Fortran の入出力文の書き方

    fortran の read, write文で25桁くらいある数値を処理したいのですが、どうのように表現するのでしょうか。数値は整数です。

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

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

  • Fortran 出力形式

    Fortranのプログラムで write(IUO,1) a(10) write(IUO,1) b(10) write(IUO,1) c(10) 1 format(1p,1f10.4) と書かれていると、ファイルIUO内に、 formatから1行でa(10),b(10),c(10)の値が連続して出力されます。 a(1) b(1) c(1) a(2) b(2) c(2) ........ ........ ........ a(10) b(10) c(10) のようにa,b,cの値を各列ごとに出力させたい時はformatをどのように書けばよいのでしょうか? 詳しい方がいらっしゃったら教えて下さい。 よろしくお願いします。

  • fortranでの出力書式設定

    ご質問させていただきます。 たとえばfortranで a=1d0,b=2d0 write(*,*)a,b と書くと数字の左側に必ず空白文字が出力させるのですが、 この空白文字をなくすことはできるのでしょうか?

  • Excel 結合&検索を文字で

    【質問1】     A列   B列 1行 A0001   1 2行 A0002   1 3行 A0003   2 4行 A0005   1 上記のようにA2を求めるのにA1とB1を足します。 A3を求めるのにA2とB2を足します。 ここで質問なのですがSUM関数や足し算の計算式を入力しても【#VALUE!】とでてしまいます。 文字と数字が結合している足し算はどのような数式を入れればよいのでしょうか。 【質問2】 尚、上記の表で足すにあたって「A1+B1」という表現ではなく「対象セルの1行前、2列右」といった文字で出来ないでしょうか? *以上わかりやすく説明していただけると嬉しいです。  宜しくお願いします。

  • fortran90/95のSUM関数について

    fortran90/95のSUM関数について fortran90/95のSUM関数について、SUM関数を使うときは範囲を指定できるのでしょうか? 例えば、 integer A(3,2)/1,2,3,4,5,6/ A=1,4 2,5 3,6 の配列があるとします。 列の和を求めたいのですが、最後の行(3行目)を足したくありません。 結果としては 1+2=3 4+5=9 にしたいのです。 このようなときは、やはりdo文にするしかないのでしょうか。 実際のプログラムではdo文があまりにも多く、見づらいのでSUM関数を使いたいのですが... どなたかご存知の方、お教えいただけないでしょうか。 よろしくお願いします。