Fortran Coder

查看: 7150|回复: 2
打印 上一主题 下一主题

[输入输出] 格式化输出问题

[复制链接]

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

跳转到指定楼层
楼主
发表于 2014-4-28 21:38:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
subroutine output(matrix)
implicit none
integer::m,n
integer::i
real::matrix(:,:)
character(len=20)::for='(??(1x,f6.3))'
m=size(matrix,1)
n=size(matrix,2)
write(for(2:3),'(I2)')n
do i=1,n
   write(*,fmt=for)matrix(i,:)
end do
return
end subroutine output

这个个格式输出见得不多啊,write(for(2:3),‘(i2)’),for(2:3)是啥意思啊?这里为什么要这么用呢?还有后面一句write(*,fmt=for)matrix(i,:),这个也没看懂,n到底是行号还是列号?求大神指点,详细见彭国伦书P448
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-4-28 22:12:00 | 只看该作者
for 是字符串,值是 '(??(1x,f6.3))'
for(2:3) 表示子字符串,从第二个字符到第三个字符。即 ??

write( for(2:3) 是把上述的两个问号替换为 n 的值。比如 n = 30,则替换后,for 的值为 '(30(1x,f6.3))'

write( * , fmt=for) matrix(i,:)
等效于
write( * , for ) matrix(i,:)

根据上面的假设,则等效于
write(*,100) matrix(i,:)
100 format(30(1x,f6.3))

n是第二维,你说他是行也行,是列也行。(看你自己的规定)

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

板凳
 楼主| 发表于 2014-4-29 22:36:44 | 只看该作者
chuxf 发表于 2014-4-28 22:12
for 是字符串,值是 '(??(1x,f6.3))'
for(2:3) 表示子字符串,从第二个字符到第三个字符。即 ??

谢谢啊,说的这么详细
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 00:32

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表