爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: 寄居蟹

[求助] 求助,fortran读数据出问题

[复制链接]

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-9-3 15:52:39 | 显示全部楼层

也许他不明白irec是干啥用的~不过现在应该明白了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-3 16:07:30 | 显示全部楼层
mofangbao 发表于 2013-9-3 15:52
也许他不明白irec是干啥用的~不过现在应该明白了

其实吧,我也不是特别明白,嘿嘿,我都是瞎猜的。作为一个菜鸟,压力山大啊。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-3 17:32:40 | 显示全部楼层
mofangbao 发表于 2013-9-3 15:49
不好意思,之前没仔细看,你这个是因为你的irec在读取下一个文件的时候没有初始化为1,比如第一个文件从开头 ...

谢谢,果然FORTRAN自学的一知半解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-3 17:34:25 | 显示全部楼层
lqouc 发表于 2013-9-3 15:27
晕,我是说你的文件是不是每个都只有in*nt那么大,如果不是的话你第二个文件开始record定位在第二个记录, ...

谢谢详细解释
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-3 17:39:43 | 显示全部楼层
mofangbao 发表于 2013-9-3 15:49
不好意思,之前没仔细看,你这个是因为你的irec在读取下一个文件的时候没有初始化为1,比如第一个文件从开头 ...

是的,没发现呀,进入下个文件前应该把记录号重设为1.   至于37*21后面要不要乘以4貌似和编译器有关吧,我以前用地好像都没有乘以4.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-9-4 10:32:41 | 显示全部楼层
冬日情愫+ 发表于 2013-9-3 17:39
是的,没发现呀,进入下个文件前应该把记录号重设为1.   至于37*21后面要不要乘以4貌似和编译器有关吧,我 ...

曾经写过一个子函数来测试是否需要乘以4,这个其实每个编译器都可以自己设置的,原理就是二进制写入一个4个字节的文件,然后用*4的方式去读取,捕获错误,如果默认不需要乘以4,但是你乘以了,是会出错的,这样就知道不应该乘以4了.函数如下:
  1. subroutine testbyte(byt)
  2. integer val,byt
  3. byt=4
  4. open(1,file='test.dat',status='replace',form='binary')
  5. write(1)123
  6. close(1)
  7. open(1,file='test.dat',status='old',access='direct',form='unformatted',recl=byt)
  8. read(1,rec=1,err=100)val
  9. goto 200
  10. 100 continue
  11. byt=1
  12. 200 continue
  13. close(1)
  14. call system("del test.dat")
  15. endsubroutine
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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