fortran90プログラム実行中に、フォルダ内にある連番のtxtファイルを読み込みたい
フォルダ内にあるtxtファイルを読み込みたいのですが、
ファイル名がabcde_xxxbw.txtといった内容になっていて
xxの部分に000~033までの3桁の連番が入り、それ以外の部分は全て共通です。
abcdeの部分は画面から入力させたいと考えています。
発生している問題・エラーメッセージ
abcdeの部分を変数datanameに渡した後
write文を用いて
do i=0, Nmax
write (filename, '(trim(dataname),'_',i3.3,'bw.txt')'),10,i
open(10, file=trim(filename), status='old')
のようにすると以下のようなエラーが出ます。
解決方法か、何か他に良いやり方があればご教授下さい。
エラーメッセージ C:\Users\Desktop\2\binarization_for_txt22 - .f90:30:42: 30 | write (filename, '(trim(dataname),'_',i3.3,'bw.txt')'),10,i | 1 Error: Syntax error in WRITE statement at (1) C:\Users\Desktop\2\binarization_for_txt22 - .f90:61:16: 61 | write (fname, '(i3.3,'bw.txt')'),11,i | 1 Error: Syntax error in WRITE statement at (1)
該当のソースコード
fortran90
program main implicit none character*30 filename !txtファイルの名前 character*30 dataname !txtファイルの名前の拡張子,連番を除いた部分 character*30 fname character*1 dummy integer :: i,j,k !繰り返し変数 integer, dimension(1,800):: pix1 !txtファイルの0~255までの数字 integer, dimension(800,800):: pix integer :: thr !2値化の際の閾値 integer :: Nmax !txtファイルの数 print*,"input condition name. ex)1o10C334000_1" read*, dataname !abcdeの部分 print*,"input the number of txt_file" read*, Nmax print*,"What is the threshold?" read*, thr do i=0, Nmax write (filename, '(trim(dataname),'_',i3.3,'bw.txt')'),10,i open(10, file=trim(filename), status='old') print*, trim(filename) do j=1,1 read(10,*) (pix1(j,k), k=1,768) end do do j=1,768 read(10,*) (pix(j,k), k=1,769) end do do j=2,769 do k=2,768 if (pix(j,k)<thr) then pix(j,k)=0 else pix(j,k)=255 end if end do end do write (fname, '(i3.3,'bw.txt')'),11,i open(11,file=trim(fname),status='new') print*, trim(fname) do j=1,1 write(11,*) (pix1(j,k), k=1,768) end do do j=1,768 write(11,*) (pix(j,k), k=1,769) end do close(11) close(10) end do end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/03 11:43 編集
2021/05/03 12:06
2021/05/03 14:27 編集