作者callmei (挨)
看板Fortran
标题Re: [问题] 格式输入问题
时间Tue Feb 21 03:48:19 2012
我不知道该怎麽解释,所以直接打了一个例子给你参考,应该是你要的
关键就是format叙述里的< >这个符号
要注意的是,这是我从INTEL FORTRAN编译器的HELP找到的
所以不晓得<>这个符号是标准FORTRAN的用法还是INTEL编译器自己的用法
因为INTEL的HELP里,标准FORTRAN语法跟INTEL自己的特殊语法与函式库都混在一起写...
如果你不是用INTEL的编译器,我不确定下面的CODE能不能用
PROGRAM main
IMPLICIT NONE
INTEGER*4::row,N
REAL*8::xyz(3,100)
CALL RANDOM_SEED()
CALL RANDOM_NUMBER(xyz)
DO row=1,100
N=INT(LOG10(DBLE(row)))+1
WRITE(*,"('AA',I<N>,<7-N>X,3(2X,E15.8))") row,xyz(:,row)
ENDDO
END PROGRAM main
输出结果应该是
AA1 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX
AA2 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX
. ... ... ...
. ... ... ...
AA10 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX
. ... ... ...
. ... ... ...
AA99 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX
AA100 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX 0.XXXXXXXXE+XX
※ 引述《sky770324 (Pony)》之铭言:
: 请想问一下大家
: 假如我想写一个档案格式像是下列这样:
: AA1 x1 y1 z1
: AA2 x2 y2 z2
: AA3 x3 y3 z3
: AA10 x10 y10 z10
: AA100 x100 y100 z100
: 大概是像面那样 AA代表是两个字元,後面是我的编号(1~999)
: 我想问一下如果想把上面那些写进去档案里面
: 我是想要利用回圈
: do row =1,100
: write(10,??)"AA",row,x1,y1,z1
: end do
: x1 y1 z1 表示的是我想表达的座标
: 而AA是我的名称,row是我的编号
: 因为座标我也要用固定的格式输出 所以我不能再write内用free format来表达出
: AA1
: AA2
: AA10
: AA100
: 我有查过彭国伦写的书,可是查不太到要用怎样的format()格式
: 才可以一次表达最上面叙述的,
: 我最多只能把它写成下面这样
: AA 1 x1 y1 z1
: AA 2 x2 y2 z2
: AA 3 x3 y3 z3
: AA 10 x10 y10 z10
: AA100 x100 y100 z100
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.218.94
1F:→ callmei:间距那些格式是我随便打的,重点就是<>这符号的用法 02/21 03:51
2F:→ callmei:如果其他编译器不能用<>这个符号 02/21 04:05
3F:→ callmei:上篇文章推文里的方法我觉得也很简单好用~可能比<>更好用 02/21 04:09
※ 编辑: callmei 来自: 140.112.218.94 (02/21 04:13)
4F:推 imys:感谢分享~ 02/21 10:12