作者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