- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Fortranで文字の読み込み&書き込み)
Fortranで文字の読み込み&書き込み
このQ&Aのポイント
- FORTRANで文字の読み込みと書き込みを行う際に、特定の文字列の一部を抜き出す方法について質問します。
- 具体的には、「_50」という文字列を「aaaa_50」という文字列から抜き出したいと考えています。
- これを実現するために、read文とwrite文の間にどのような処理を記述すればよいのかを教えていただきたいです。
- みんなの回答 (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の部分を飛ばしてしまえばよいのでは _で判断するのであれば、一行では無理
お礼
早速ありがとうございます。 > "aaaa_50"のaaaaの部分は必ず4桁なのでしょうか、 aaaaは4桁、_のあとに文字or数字、といった固定の形式です。 「_」で判断する必要もありません。 ご教示いただいた「(5:7)」ですが、これが私がこの処理で使いたかったものです。 思い出すことが出来ました。 断片的に思い出すことが出来たその部分文字列なのですが、 writeのあとに(5:7)を入れても書き出せません。 なぜでしょうか・・・? たびたびすみません、宜しくお願い致します。
補足
※先にお礼に書き込んでしまい「できない」としていましたが、 出来ました。 私がアホでした。 部分文字列ですべて解決しました。 ありがとうございました!