爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4064|回复: 2

fortran读取数据遇到的问题

[复制链接]

新浪微博达人勋

发表于 2018-3-10 11:08:04 | 显示全部楼层 |阅读模式
GrADS
系统平台: window
问题截图: -
问题概况: 有m行,n列数据,每一列对应的是同一物理量数值,现在想读取第k列的所有数据,但这一列的数据类型既有整数,也有含两位或者三位小数的实数,我用read语句read(*,'f')读取时,实数读的都是对的,但整数都读错了,应该怎么读取呢
我看过提问的智慧: 看过
自己思考时长(天): 1

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

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

x
有m行,n列数据,每一列对应的是同一物理量数值,现在想读取第k列的所有数据,但这一列的数据类型既有整数,也有含两位或者三位小数的实数,我用read语句read(*,'(...,f)')读取时,实数读的都是对的,但整数都读错了,应该怎么读取呢,希望有人能帮我解决一下,谢谢~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-3-10 14:57:06 | 显示全部楼层
读取的时候不要有格式读
real tempx,dat(n)  !!!n为行数
open(15,file='dat.txt')
do j=1,n
  read(15,*) (tempx,i=1,6),dat(j)
enddo
close(15)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-3-10 17:58:11 | 显示全部楼层
aridlhy 发表于 2018-3-10 14:57
读取的时候不要有格式读
real tempx,dat(n)  !!!n为行数
open(15,file='dat.txt')


我可能没有表达清楚,我读取的时候是一行一行读的,用的eof判断是否读完,我把代码放上去,你帮我看一下吧。就是我用f格式读取某一列的数据,输出后原本是实数的没有错,原本是整数的输出就不正确。program radiation

character fname*8,a,b,time*19,char21a*21
integer arecord
real ur,ulr,dlr,dr,rn,batt

iout=0
open(31,file='H:/lw-data/小论文/辐射/output/info.txt') ! output record number and error information.
open(10,file='H:/lw-data/小论文/辐射/filenamelist.txt',status='old')   ! filename list

do while(.not.eof(10))
   read(10,'(13x,a8)') fname

   open(1,file='H:/lw-data/小论文/辐射/0米/'//'CR3000_0_DAT_'//fname//'.dat')
   open(20,file='H:/lw-data/小论文/辐射/output/'//fname//'.txt')
        write(20,'(207a)') 'Time               ,  record,  UR,  ULR,  DLR,  DR,  RN,  Batt'
        write(20,'(207a)') 'YYYY-MM-DD HH:MM:SS,     *,  W/m2,  W/m2,  W/m2,  W/m2,  W/m2,*'
            write(20,*)
   do i=1,4
    read(1,*) a   !略过本程序暂未使用信息
   enddo
   do while(.not.eof(1))
      read(1,'(a,1x,i6,1x,6f)',err=100,end=100) char21a,arecord,ur,ulr,dlr,dr,rn,batt
      time(1:19)=char21a(2:20)
      print*,time,arecord,ur,ulr,dlr,dr,rn,batt
          write(20,'(a19,1h,,i6,6(1h,,f))') time,arecord,ur,ulr,dlr,dr,rn,batt
     if(.not.eof(1) ) then
           read(1,*) b
           BACKSPACE (1)
     endif
   enddo
   close(20)
100   write(31,*) "========================================================================="
      write(31,*) "file end error !!!  "
      write(31,*)
enddo
close(31)
close(10)
end[/code]
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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