24小时热门版块排行榜    

CyRhmU.jpeg
查看: 683  |  回复: 4

canny

新虫 (初入文坛)

[求助] 文件无法循环

想做一个文件循环操作,但是文件无法循环读取, 只能读入第一个文件,请大家帮忙看一下
program main
implicit none
real::a(2000)
real::b(2000)
real::c(2000)
real::d(2000)
integer i
integer j
integer k
integer p
real sum1,sum2,sum3,sum4
real ave1,ave2,ave3,ave4
character*30 filename(7)  ! 月数为31天的月份
character*30 output(7)

data filename /'D:/zhao/51467/1.txt','D:/zhao/51467/3.txt','D:\zhao\51467\5.txt','D:\zhao\51467\7.txt','D:\zhao\51467\8.txt','D:\zhao\51467\10.txt','D:\zhao\51467\12.txt'/
data output /'D:\zhao\51467\1out.txt','D:\zhao\51467\3out.txt','D:\zhao\51467\5out.txt','D:\zhao\51467\7out.txt','D:\zhao\51467\8out.txt','D:\zhao\51467\10out.txt','D:\zhao\51467\12out.txt'/

do k=1,7
     p=0
    open(10,file=filename,status='old',iostat=p)
    print *, "already open"  !打开文件
   i=1
   do while(.true.)
      read(10,*) a(i),b(i),c(i),d(i)   !读取数据
     if(p/=0) exit                  !判断文件是否读取正常  
    if(mod(i,31)==0)then          !读满一个月   
         sum1=0.0
                  sum2=0.0
          sum3=0.0
          sum4=0.0
            do j=i-30,i         !求月平均
                        sum1=sum1+(a(j)*0.1)
                 sum2=sum2+(b(j)*0.1)
                 sum3=sum3+(c(j)*0.1)
                 sum4=sum4+d(j)
               end do                
                ave1=sum1/31
                  ave2=sum2/31
                  ave3=sum3/31
                 ave4=sum4/31
          
             open(11,file=output,status='replace')  !写入文件
                print *, "writing file"
           write(11,"(4(1XF6.2))" ave1,ave2,ave3,ave4       
                                            
        end if  
      i=i+1
    end do
  rewind(10)
  close(10)
  rewind(11)
   close(11)
end do
stop
end


运行之后显示的错误是 forrt1:severe<24>:end-of-file during read,unit10,file D:\zhao\51467\1.txt
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xzhdty: , 欢迎常来程序语言 2012-03-31 23:11:38
canny: 金币+2, ★★★很有帮助 2012-04-01 10:39:12
end-of-file during read,unit10,file D:\zhao\51467\1.txt

文件里面没有东西。
可以增加一个
do while(.not. eof(10))
end do
很女子很弓虽大
2楼2012-03-31 22:32:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

canny

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by lurencyj at 2012-03-31 22:32:24:
end-of-file during read,unit10,file D:\zhao\51467\1.txt

文件里面没有东西。
可以增加一个
do while(.not. eof(10))
end do

这个是加在哪边?
3楼2012-04-01 10:00:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

canny

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by lurencyj at 2012-03-31 22:32:24:
end-of-file during read,unit10,file D:\zhao\51467\1.txt

文件里面没有东西。
可以增加一个
do while(.not. eof(10))
end do

我明白你的意思了 修改之后现在是不会提示那个错误了 但是文件还是不能循环处理,只能处理出第一个文件...这是为什么啊?谢谢~
4楼2012-04-01 10:26:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

canny

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by canny at 2012-04-01 10:26:56:
我明白你的意思了 修改之后现在是不会提示那个错误了 但是文件还是不能循环处理,只能处理出第一个文件...这是为什么啊?谢谢~

我找到原因了 应该写成filename(k) output(k)....
太粗心了
谢谢你哈
5楼2012-04-01 10:38:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 canny 的主题更新
信息提示
请填处理意见