爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5181|回复: 16

[求助] fortran数据读入问题

[复制链接]

新浪微博达人勋

发表于 2015-8-7 15:30:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 黑夜的北极星 于 2015-8-7 18:57 编辑

文件中的数据是规则的,每列数据之间的间隔是空格,但是其间存在多个空格,这样会不会导致fortran不能读入,求助如何读入这样的数据,导出的结果如下图

这是数据的内容

这是数据的内容
QQ截图20150807185511.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-7 15:32:05 | 显示全部楼层
这是我自己写的一个程序,但是读入好像有问题
character(len=100) :: strFileName,a,b,c,d,e,f
integer :: intIO
integer :: l,i,j=1,k
real, dimension (216,7) :: out
open(11,file='filelist.txt',status='old')
Open(12,file='out.txt')
do l=1,24
     read(11,*,iostat=intIO) strFileName
     if(intIO/=0) exit
     open(unit=13,file=strFileName,status='old')
   do i=1,670
           if((i.ge.139).and.(i.le.147))then
   
              read(13 ,*) a,b,c,out(j,:),d,e,f
                  write(*,*)out(j,:)
           j=j+1
           endif
   enddo
         close(unit=13)
enddo

Do k=1,216
  write(12,*) out(k,:)
End Do
Close( 12 )

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

新浪微博达人勋

发表于 2015-8-7 15:54:13 | 显示全部楼层
再仔细推敲推敲。看起来不复杂
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-7 16:00:59 | 显示全部楼层
多个空格一般不影响读取。
程序有什么问题?报错给出来。这样别人不好帮助你。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-7 16:02:19 | 显示全部楼层
zzhlrj 发表于 2015-8-7 15:54
再仔细推敲推敲。看起来不复杂

主要是读入问题,貌似每列之间的多个空格也会被读入,导致不能正常读入每列的数据,这是我不知道怎么改的地方
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-7 16:13:36 | 显示全部楼层
字符串abc设置100位的可能有问题。这里直接弄一个字符串就行,至于多少位可以手动数一下,能够到那个'A'就行了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-7 16:23:45 | 显示全部楼层
lqouc 发表于 2015-8-7 16:13
字符串abc设置100位的可能有问题。这里直接弄一个字符串就行,至于多少位可以手动数一下,能够到那个'A'就 ...

程序运行没有问题,只是结果不是我需要的;如果手动数一下的话因为第一二列的汉字数不一样,一个汉字占三个字符,那每列到A的字符数都不一样啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-7 16:29:31 | 显示全部楼层
黑夜的北极星 发表于 2015-8-7 16:23
程序运行没有问题,只是结果不是我需要的;如果手动数一下的话因为第一二列的汉字数不一样,一个汉字占三 ...

这样的话你就每行用一个超长的字符串读取所有信息,然后用index函数定位'A'的位置(函数用法自己查一下),A之后的六个数据都是可以通过数位数来判断了吧,截取字符串之后read转换一下就行了。
虽然麻烦但是暂时只想到这个。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-7 16:36:17 | 显示全部楼层
lqouc 发表于 2015-8-7 16:29
这样的话你就每行用一个超长的字符串读取所有信息,然后用index函数定位'A'的位置(函数用法自己查一下), ...

哦,好吧,我先试试看吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-7 18:55:24 | 显示全部楼层
lqouc 发表于 2015-8-7 16:00
多个空格一般不影响读取。
程序有什么问题?报错给出来。这样别人不好帮助你。

对了,想问一下,多个空格既然不影响读入数据,那我写的程序应该可以读入啊,怎么读入后的结果错了呢,输出的结果是这样的
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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