爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5165|回复: 4

[求助] 请问不同长度文件用一维数组怎么顺序读取?

[复制链接]

新浪微博达人勋

发表于 2012-3-20 23:58:46 | 显示全部楼层 |阅读模式

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

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

x
我这样大概100个站点,每个站点开始的年月日不同,数据长度不同,比如有的站点是从51年开始记录,有的从60年记录。我想顺序读下去这些个文件,就编写了如下程序,程序链接时没有错误,但每次读取的时候总是显示数组溢出,可能是红色的问题。请问我的程序改怎么改?
module typedef
  type rheight
integer :: station, lat,lon,height,year!  站点号,纬度,经度,高度
  end type
type day   
integer :: year,day
  end type
end module
program main
  use typedef
  implicit none
  integer, parameter :: fileid=9
integer, parameter :: days=16802  !选取最大文件的长度
character(len=80)  :: tempstr
  type(rheight) :: r(days) !原数据
  type(day) :: d(days)       ! 存储提取出数据
  integer i,j,k,n
  integer a,b,c

  character stationfile(7)*9
  data stationfile/'52378.txt','52495.txt','52674.txt','52679.txt','52681.txt','52787.txt','52797.txt'/
   n=1
  do  j=1,58

  open(n, file='f:\50-07/'//trim(stationfile(j))//'')
  


  ! 用循环读入每日站点数据
  do i=1,days1
read(n,*) r(i)%station, r(i)%lat,r(i)%lon,r(i)%height,r(i)%   
if ((r(i)%year)>1960) then
a=i-3652
d(a)%year=r(i)%year
d(a)%day=r(i)%day
end if                                         
  end do
  close(n)
   k=n+60
  ! 在文件中输出日降水量
  
  open(k, file='f:\d'//trim(stationfile(j))//'')
  
  do b=1,days2
  write(k,"(I4,I2,I2,f8.1)") d(b)%year, d(b)%month,d(b)%day,d(b)%dr
  end do
  close(k)
   n=n+1
  end do

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-3-21 09:27:59 | 显示全部楼层

回帖奖励 +2 金钱

首先确定你组合成的文件名是没有错误的
然后像这种行数不一致的,建议read的时候加上 end=的标签,这样读取到文件末尾的时候就会自动跳转到指定行去执行
还有行数不定时的循环建议使用 continue的方式来循环,而不是do一个固定的数值,具体方法我的很多帖子里面都用过,你自己找找看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-21 13:37:11 | 显示全部楼层
可以先判断一下文件的行数,然后用动态数组
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-22 11:12:56 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-22 12:15:01 | 显示全部楼层
whmooncool 发表于 2012-3-22 11:12
可以详细说下嘛?谢谢

详细请见fortran版求取文件行数的帖子
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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