看板 Fortran 關於我們 聯絡資訊
感謝 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)
DMFC:write 的 format 不能用字元來指定吧 11/07 10:05
DMFC:可以..剛試了一下...我可以用 11/07 10:10
DMFC:所以..我猜..你應該是順序反了 11/07 10:10
DMFC:fmt=" " 要在 write(*,fmt) 之前出現... try it 11/07 10:10
snowanimal:恩! 因為fortran的程式執行是依序的 11/07 18:22
redface:了解~~ 感謝回答 11/10 10:10