爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3533|回复: 5

[求助] fortran循环读文件

[复制链接]

新浪微博达人勋

发表于 2017-12-28 20:06:00 | 显示全部楼层 |阅读模式

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

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

x
编写一个小程序批处理文件,但是一直报找不到文件
program main
implicit none
integer,parameter::n=75000
integer ch(n),high(n),lon(n),lat(n),year(n),mon(n),day(n),var1(n),var2(n),var(n),hao1(n),hao2(n),hao3(n)
integer i,j,k       


do i=1981,1982
  do j=1,12  
   open(10,file='F:\dw\pre\i\j.TXT',status='old')
    open (11,file='F:\dw\j\i.TXT')
    do k=1,n
    read(10,*)ch(k),high(k),lon(k),lat(k),year(k),mon(k),day(k),var1(k),var2(k),var(k),hao1(k),hao2(k),hao3(k)
      if (ch(k)==55593.or.ch(k)==55598.or.ch(k)==56227.or.ch(k)==56288.or.ch(k)==56312.or.ch(k)==56317.or.ch(k)==56331.or.ch(k)==56434)then
      write(11,*)ch(k),lon(k),lat(k),year(k),mon(k),day(k),var(k)
      end if
     end do
    end do
  end do
end

这是报错截图

这是报错截图

路径

路径


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

新浪微博达人勋

发表于 2017-12-28 20:40:04 | 显示全部楼层
你要打开的1/1.TXT,你的程序打开的是i/j.TXT
先把数字变成字符
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-28 22:20:43 | 显示全部楼层
open(10,file='F:\dw\pre\i\j.TXT',status='old')
    open (11,file='F:\dw\j\i.TXT')
这样写是不对的 要变成字符输入文件路径和名字才行
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-12-29 18:12:18 | 显示全部楼层
哦哦,后来发现了这个问题,谢谢,后来改成这样
program main
implicit none
integer,parameter::n=75000
integer ch(n),high(n),lon(n),lat(n),year(n),mon(n),day(n),var1(n),var2(n),var(n),hao1(n),hao2(n),hao3(n)
integer i,j,k
character*4 ii
character*2 jj       
character(25)::filename='F:\dw\pre\1234\1.TXT'
character(25)::filename2='F:\dw\pre\5678\3.TXT'



do i=1981,1982
  do j=1,12  
  write(filename(11:14),'(I4)')i
  write(filename(16:16),'(I4)')j
  write(filename2(16:16),'(I4)')i
  write(filename2(11:14),'(I4)')j
   open(unit=10,file=filename,status='old',recl=65)
    open (unit=11,file=filename2,recl=65)
    do k=1,n
    read(10,*)ch(k),high(k),lon(k),lat(k),year(k),mon(k),day(k),var1(k),var2(k),var(k),hao1(k),hao2(k),hao3(k)
      if (ch(k)==55593.or.ch(k)==55598.or.ch(k)==56227.or.ch(k)==56288.or.ch(k)==56312.or.ch(k)==56317.or.ch(k)==56331.or.ch(k)==56434)then
      write(11,*)ch(k),lon(k),lat(k),year(k),mon(k),day(k),var(k)
      end if
     end do
     close(11)
    end do
  end do
end


但是提示错误:
severe(66):output statement overflows record,unit-5,file Internal Formatted Write
请问这又是啥原因呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-29 18:22:20 | 显示全部楼层
本帖最后由 lqouc 于 2017-12-29 18:23 编辑
huangyao 发表于 2017-12-29 18:12
哦哦,后来发现了这个问题,谢谢,后来改成这样
program main
implicit none

recl都去掉吧
而且你的输出文件名i,j似乎是写反了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-12-29 21:17:30 | 显示全部楼层
huangyao 发表于 2017-12-29 18:12
哦哦,后来发现了这个问题,谢谢,后来改成这样
program main
implicit none

去掉recl一样的,输出文件是存成1-12个月的12个文件夹,每个文件夹里分别放每年的txt,比如1981.txt,所以应该没写反
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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