fortran初心者です。
fortranで下のようにNAが含まれたデータを読み込んで2次元配列に格納することは可能でしょうか。
1 2 3
4 NA 6
7 8 9
以下のコードで試したところ、「Fortran runtime error: Bad real number in item 2 of list input」と表示され、readできませんでした。よい方法があれば教えていただきたいです。
program openclose
implicit none
integer i,j
integer,parameter :: n=3,m=3
real,dimension(3,3) :: a
open(10,file='file.dat',status='old')
do i=1,n
read(10,*)(a(i,j),j=1,m)
end do
do i=1,n
write(*,*)(a(i,j),j=1,m)
end do
close(10)
end program openclose
No.1ベストアンサー
- 回答日時:
読み込み時に,"iostat = 変数名"を付けると,エラーのチェックができます。
とりあえず8行目で "iostat = ios" と書けばエラーは防げるのですが,
j = 2 でエラーになるので,j = 3 は実行されず,a(2, 3) 成分も値が入らなくなります。
そこで,いったん文字列の区切りとしてデータを保存し,その後1つずつ値を代入する形です。
ソースは次のような感じだと思います。
program openclose
implicit none
integer, parameter :: n = 3, m = 3
integer :: i, j, ios
character(len=128) :: token(m)
real :: a(n, m)
open(10, file = 'file.dat', status = 'old')
do i = 1, n
read(10, *) token(1 : m) ! スペース区切りで文字列として保存
do j = 1, m
! j 番目の区切りから読み込み,エラーが出たら ios /= 0 になる
read(token(j), *, iostat = ios) a(i, j)
if (ios /= 0) a(i, j) = -1.0d+00
end do
end do
do i = 1, n
write(*, *) (a(i, j), j = 1, m)
end do
close(10)
stop
end program openclose
とてもスマートな解決策で目から鱗です。"iostat = 変数名"は今後も使えそうです。とても勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonのエラーについて
-
fortranでNAのあるデータを読み...
-
Ruby で タグで囲まれた文字を...
-
【ExcelVBA】300万件越えCSVか...
-
バッチ処理 特定の文字以降を...
-
ファイル名を変数で書きこむfwr...
-
ダブルコーテーション付きでCSV...
-
パイソンでテキストファイルが...
-
CSVデータの文字列置換
-
VBA テキストボックスを選択状...
-
SQLファイルの読み込み
-
EXCEL→CSV保存時のダブルクォー...
-
SQLでテキストボックスの文字を...
-
C# ファイルを読み込みlistvie...
-
問題をランダムに出すページの作成
-
StringGridの中身をCSV形式で保...
-
フォームのResizeイベントについて
-
VBAでcsvファイルもシートもあ...
-
VBAで複数のCSVからレコードセ...
-
FileListBoxで出すものを絞り込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fortranでNAのあるデータを読み...
-
Fortran:列数の分からないデー...
-
pythonのエラーについて
-
【ruby】flockで掛けたロックを...
-
pycharmへのpysamインストール...
-
【fortran77】空行を含む数値デ...
-
rubyの見えない文字
-
rubyプログラムでのフォルダ内...
-
2行読み込んで一行戻り、また2...
-
ギャスケット作成。修正の解説...
-
バッチ処理 特定の文字以降を...
-
Excelマクロ 空白セルを無視し...
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
[コンパイルエラー 修飾子が不...
-
VBA テキストボックスを選択状...
-
Access VBA エラー2448について
-
INPUTタグ disabledの文字色を...
-
EXCEL→CSV保存時のダブルクォー...
おすすめ情報