爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 50319|回复: 79

[经验总结] 利用FORTRAN 读取文件行数的小代码

  [复制链接]

新浪微博达人勋

发表于 2011-7-14 22:22:03 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
每次读文件,都要先看看有多少行,烦得很啊,有木有啊,要是直接打开多好啊,可是自己太笨,想不出好办法

直到有一天,在自己面前堆了几千个文件,每个文件的行数都不同,瞬间石化了{:soso_e136:}{:soso_e136:}

必须找一个好的方法了,感谢baidu,google,还有万能清风{:soso_e102:},热心的深深版主{:soso_e151:}.....

终于,找到了{:soso__1886989460682607670_4:}

不看不知道  看了就悔恨了,原来这么短的小代码,就能实现

还在用老方法看行数? 你out了。。。。{:soso_e122:}{:soso_e122:}{:soso_e122:}{:soso_e122:}{:soso_e122:}  (虽然3分钟之前,我还在out行列{:soso_e133:}{:soso_e133:}{:soso_e133:}{:soso_e133:}

不多说啦,直接上

implicit none
real line
integer i
i=0  !清风提醒,特加此行
open(10,file='topmad.txt',status='old')
do while (.true.)
read(10,*,end=100) line
i=i+1
enddo
100 continue
print*,i

end

然后 i 就是行数啦  
不信你试试

评分

参与人数 5金钱 +26 贡献 +8 收起 理由
979877673 + 5 很给力!
wutongyeyu + 2 + 2
love2100 + 8 + 1 赞一个!
mofangbao + 5 + 3
言深深 + 6 + 2 哈哈,topmad太逗了,whatever很感谢分享,.

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-14 23:45:30 | 显示全部楼层
idl中直接有现成的函数,file_lines,不过估计算法是一样的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-7-15 07:52:06 | 显示全部楼层
我还真希望我是万能的,哈哈
额。。。还是发现了一个小漏洞,I的初始值应该为
integer i=0
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-15 09:10:48 | 显示全部楼层

何版主也来捧场啦,感谢感谢  没怎么接触过idl  可能后面的工作用得到 还望多多指教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-15 09:13:11 | 显示全部楼层
topmad 发表于 2011-7-15 09:10
何版主也来捧场啦,感谢感谢  没怎么接触过idl  可能后面的工作用得到 还望多多指教

:lol,我也要用fortran的,当然要向你们学习啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-15 10:21:33 | 显示全部楼层
这个蛮好,有没有处理列数不一样的哦,呵呵……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-15 10:37:01 | 显示全部楼层
新小子 发表于 2011-7-15 10:21
这个蛮好,有没有处理列数不一样的哦,呵呵……

估计我也要碰到同样的问题了  如果研究出来了  就发上来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2011-7-15 10:39:16 | 显示全部楼层
本帖最后由 言深深 于 2011-7-15 10:40 编辑
mofangbao 发表于 2011-7-15 07:52
我还真希望我是万能的,哈哈
额。。。还是发现了一个小漏洞,I的初始值应该为
integer i=0

哈哈,其实fortran里面变量不定义的话,默认的全是0。然后我比较喜欢用I-N规则,连implicit none都可以省略啦!
不知,TOP的这个程序挺不错,很赞啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-15 22:20:43 | 显示全部楼层
我以前用这样计算的
read(10,"(A160)")tempstr
j=0
statnum=0
do while(.not.eof(10))
read(10,"(I5)")i
if(i/=j)then
j=i
statnum=statnum+1
end if
end do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-16 09:06:06 | 显示全部楼层
artmunich 发表于 2011-7-15 22:20
我以前用这样计算的
read(10,"(A160)")tempstr
j=0

这个方法我也看到了,我感觉那个更加直观,就放上去了,呵呵,a版好勤奋啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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