回 帖 发 新 帖 刷新版面

主题:求助文件的读写

111111(日降水)
2222 44554
············
············
············(17行)
站号 日期 维度 经度 降水量····
(共860行)
 ···············以上为格式···················
需要计算的是n年的降水平均值,资料中有n个文件夹,每个文件夹里面有365个上面格式的文件,我分析的思路是把站号,日期,经纬度及降水量各存入数组中,每年存一个,然后再来算平均值。但在具体的操作中,由于附件中的文件名为rr.1971010119710101(第一个文件夹里的第一个文件)~rr.1971123119711231(第一个文件夹里的最后一个文件)。我不知道该怎么来打开,怎么设置循环和变量才可以使该文件夹中得所有数据存到数组中。
感谢帮助,这个也应该算菜鸟问题,但是我看了好几天的书也没找到解决方法,谢谢了哈!
qq:287078684 一起讨论fortran

回复列表 (共6个回复)

沙发

你先把文件名都存到一个文件中,然后逐行读取并打开就行啦:)

板凳


谢谢了 那我先试试[em2]

3 楼


再问下高手,如果我读的资料最后面都有一个[$] 这样的字符(共有1000个这样的资料),不能用end语句来表示,那应该怎样来写呢? 以下是我程序的片段
我定义了个字符变量a
i=1,nday
k = 0
   do    
    read (10, *, iostat=iStatus) a
    if (iStatus == 0 .and. a /= "[$]") then
    backspace (10)
    k = k + 1
    read (10, *)  t1(k,i)!资料
    else
    exit
    end if
end do
end do
但是读出来的资料只有第一个文件中的资料,后面999个却没有读出来,能帮我看看吗?
十分感谢

4 楼

把exit改为cycle就行了:)
另外,你完全可以把整个if...else.endif改成这样一行:
    if (iStatus == 0 .and. a /= "[$]") read (a, *)  t1(k,i)!资料

5 楼

又有问题了,嘿嘿··
以下程序是存起读出来数据中的站点
t1(j,i)是之前读出来的站号数组,t1(j,1)是读出来的第一天的站号。
每天的站点不一样,我需要将所有的站点存到一个文本中。
先将第一天的存到iStaID1(j)中,第一天有850个站。
再将以后nday天的站点与iStaID1(j)比较,如果不相同,就将其存到iStaID2(j)中,
再将iStaID1(j)及iStaID2(j)写到文本中。以下是我的程序,不知道对不对,感谢高手的指点 嘻嘻
open(20,file="E:\iStaID.txt",status="new",form="formatted")
     
   do j = 1,850
        iStaID1(j)=t1(j,1)
     write(20,*) iStaID1(j)
   end do     
     
     do i = 1,nday
        do j = 1,nsta 
         
         if(t1(j,i)/=iStaID1(j))then
         iStaID2(j)=t1(j,i)
         else 
         exit
        end if     
        k=0
    do
       write(20,*) iStaID2(j)
       k=K+1
    end do

        end do
    end do
close(20)[em1][em1][em1][em1][em3][em35][em35]

6 楼

问题已解决,还是谢谢了

我来回复

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