回 帖 发 新 帖 刷新版面

主题:请教一个很古怪的读写问题

数据如下:

AH  ANQ    714    30.583     117.022     75           
AH  BEB    67     32.90550   117.2974    49.00000      
AH  BZY    4973   31.39860   116.2164    240.0000

 

我读取的方式为:

character*5 nam
real*8 weid,jingd,gaod

do while(.not.eof(11))
  read(11,'(4x,a5,9x,f8.5,3x,f9.5,3x,f9.3)')nam,weid,jingd,gaod
  write(12,'(a5,2x,f8.5,2x,f9.5,2x,f9.3)')nam,weid,jingd,gaod
enddo

 

 

得到的结果为:

ANQ    30.58300  117.02200      0.075
BEB    32.90550  117.29740     49.000
BZY    31.39860  116.21640    240.000

 

 

问题:同样是浮点数据,为什么第一行的75活生生的就变成了0.075了,而其他的数据却没有问题?

回复列表 (共26个回复)

21 楼

你还是没回答我的问题。对于不完整数据怎么处理?????

BU  HBZ    940    38.24820   114.3083    132.9800       

这样你剔除 1,3 列变成:

HBZ   38.24820   114.3083    132.9800       

这样的数据呢???怎么处理???

BU  HU1    3

还有一个问题,这数据里有没有其他的缺失方式??比如只有两列??或者有 4 列??有的缺失第一列,有的缺失第4,第5列??

22 楼


不好意思哈,这两天系统崩溃了。
对于类似这样的数据:BU HU1 3,剔除一三列之后只剩下 HU1 就不输出了,这些数据体里没有其他的数据格式,只有6列和3列的格式,3列的数据会不规则的出现

23 楼


FORMAT(/9X,1HR,15X,1HZ,13X,5HSIGMA,13X,2HDL,14X,1HL,14X,4HTAO1,
13X,2HFA,13X,3HRFA/)
FORTRAN77里面的一个输出格式,好像输出的是变量抬头,R,Z,SIGMA,DL,L,TAO1,FA都是出现过的变量。
这个格式到底什么意思,H代表什么,我学的是90版的。请教大神!

24 楼


H表示输出的是字符串,前面的数字代表字符串的长度,后面的变量代表字符串名称,整个格式化代码的意思是:
换行,空9格,输出R,空15格,输出Z,空13格,输出SIGMA,空13格,输出DL,空14格,输出L,空14格,输出TAO1,空13格,输出FA,空13格,输出RFA,换行

25 楼


非得用fortran玩这个吗?
awk,perl都是不错的选择!

26 楼


不是的,他说了是f77的语言,肯定是看的老程序,这是老程序里的经典写法,不弄懂的话是用不了这些程序的

我来回复

您尚未登录,请登录后再回复。点此登录或注册