作者redface (redfaCE)
看板Fortran
標題Re: [問題] 關於自動換行...
時間Thu Nov 6 13:44:54 2008
感謝 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)
1F:→ DMFC:write 的 format 不能用字元來指定吧 11/07 10:05
2F:→ DMFC:可以..剛試了一下...我可以用 11/07 10:10
3F:→ DMFC:所以..我猜..你應該是順序反了 11/07 10:10
4F:→ DMFC:fmt=" " 要在 write(*,fmt) 之前出現... try it 11/07 10:10
5F:→ snowanimal:恩! 因為fortran的程式執行是依序的 11/07 18:22
6F:→ redface:了解~~ 感謝回答 11/10 10:10