Re: [問題] 關於自動換行...

看板Fortran作者 (redfaCE)時間16年前 (2008/11/06 13:44), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串4/4 (看更多)
感謝 snowanimal 指教 我測試程式如下 執行OK program test implicit none character*200 fmt integer year,month,day,n,i real var(4) n=4 year=1990 month=6 day=12 do i=1,n var(i)=i*12.3 enddo open(2,file="test.txt") write(*,"(1x,i4,a1,i2,a1,i2"//repeat(",a1,f7.2",n)//")") (接續下行) year,"/",month,"/",day, (",",var(i),i=1,n) stop end 但是我用fmt作字串變數時 將程式改寫成 write(*,fmt) year,"/",month,"/",day, (",",var(i),i=1,n) fmt="(1x,i4,a1,i2,a1,i2"//repeat(",a1,f7.2",n)//")" 卻會發生錯誤如下 run-time error F6981: WRITE(CON) - initial left parenthesis expected in format 請問一下我是哪邊弄錯了呢? ※ 引述《redface (redfaCE)》之銘言: : 抱歉 : 利用這串討論再發問一個問題 : 如果我今天是 輸出的變數個數不一定 : n為變數給定 : write(10,100) (var(i),i=1,n ) : 100 format(???) : 這樣我format裡面要怎麼寫? : 或是有其他方法可以處理? : ※ 引述《DMFC (solebaby)》之銘言: : : write 是有default 值~ (不過我不知道是啥Orz) : : 就我的經驗 : : 大約是 f20.10 左右 : : 最長應是 128 字元 : : 也就是說.. 最多一行會 show 出四個實數 : : for example : : dimension a(22) : : write(*,*) a : : 因沒指定 format ... fortran就用 default值 : : 於是得到 : : 0.0000000000 0.000000000 ...... : : 之類的 : : 此時就會出現.."四行寫完"的現象 : : 若不想要四行寫完 : : 那就給它format嘍 : : write(6,'(22f8.2)') : : 這樣它就會把22個數字show出來 : : 注意長度 : : 再微調吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.207.34 ※ 編輯: redface 來自: 140.112.207.34 (11/06 13:45)

11/07 10:05, , 1F
write 的 format 不能用字元來指定吧
11/07 10:05, 1F

11/07 10:10, , 2F
可以..剛試了一下...我可以用
11/07 10:10, 2F

11/07 10:10, , 3F
所以..我猜..你應該是順序反了
11/07 10:10, 3F

11/07 10:10, , 4F
fmt=" " 要在 write(*,fmt) 之前出現... try it
11/07 10:10, 4F

11/07 18:22, , 5F
恩! 因為fortran的程式執行是依序的
11/07 18:22, 5F

11/10 10:10, , 6F
了解~~ 感謝回答
11/10 10:10, 6F
文章代碼(AID): #194eHNmD (Fortran)
討論串 (同標題文章)
文章代碼(AID): #194eHNmD (Fortran)