Fortran Coder

查看: 15391|回复: 7
打印 上一主题 下一主题

[文件读写] Fortran读规定格式文本文件中复数矩阵的难题

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2014-5-8 21:26:33 | 显示全部楼层
首先,你的代码不是 Fortran77 的,至少是 Fortran90 的

其次,你这个格式确实不好读,需要绕一些弯。

[Fortran] 纯文本查看 复制代码
character( len = 64 ) :: cTemp
character( len = 64 ) , allocatable :: cImag(:)
character( len = 1 ) , allocatable :: cSign(:)
real , allocatable :: rReal(:)
real :: tImag , tSign
integer :: i , j , k
Open(12,File='in.txt')
allocate(cImag(n)) !// 如果 n 是列数
allocate(cSign(n))
allocate(rReal(n))
Do i = 1 , m
  read( fid , * ) (( rReal(j) , cSign(j) , cImag(j) ) , j = 1 , n )
  Do j = 1 , n
    tSign = 1.0
    if ( cSign(j) == '-' ) tSign = -1.0
    cTemp = cImag(j)
    k = Len_Trim(cTemp)
    cTemp(k:k) = ''
    read( cTemp , * ) tImag
    A( i , j ) = cmplx(rReal(j) , tSign * tImag )
  End Do
End Do  

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-5-8 21:42:28 | 显示全部楼层
77 和 90 没有太严格的界限。就像 C99 和 C89 一样。

但是 77 不允许用 allocatable 的数组,呵呵。现在建议不要特意学习 77 了

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2014-5-9 18:24:11 | 显示全部楼层
楼上说得没错,有条件的话,使用一些更标准的格式会更好。或者自己规定一些比较简单鲜明的格式,对自己,对他人,都有好处
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-6 17:16

Powered by Tencent X3.4

© 2013-2024 Tencent

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