爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: wangxue910402

[求助] fortran读取数据换行的问题

[复制链接]

新浪微博达人勋

发表于 2016-1-6 08:06:57 | 显示全部楼层
对于输出格式 write(2,*) (a(i),i=1,6) fortran 有时会默认五个数字一行
用do i=1,6 循环读数则是每一行一个数字  最后读出只有一列

可以试试 do i=1,5
         write(2,'(f10.5)',advance='no') a(i)         
              enddo                                              !相当于第一个到第五个数据读出不转行
         write(2,'(f10.5)') a(6)                             !写入第六个数字后再转行

这样写进去的应该是六个数字一行。。。。当然可能有比这个更简单的写法   仅供参考
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-6 08:31:25 | 显示全部楼层
wangxue910402 发表于 2016-1-5 20:39
谢谢,把数据弄成一行了
56021  20090101   -9.20  -14.60     -12.0       0.0
53562  20090101   -4. ...

如果只是需要读取原始数据后把结果按照各站分别输出,而不需要做数据处理的话,直接将日期设置为一个字符串变量就行了,比如这样,character*8 :: dateName。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-6 08:44:59 | 显示全部楼层
wangxue910402 发表于 2016-1-5 20:08
你好,我还想再问一下,我的最终目的是想用if语句把每个站点的信息挑选出来,请问我这样按列排放应该怎 ...

先建立各站点的空文件,然后边读边写:
open(122, file=infile, form='formatted', status='old')
do while(.true.)
    read(122, '(A5,2x, A8, <5>(F10.1))', iostat=stat)  staName, dateName, (arrary(i),i=1,5)
    if(stat/=0) exit
        do ista=1,nsta
        if(stid==StaList(ista)) then
            open(111, file=StaList(ista)'.txt', form='formatted', status='old', position='append')
            write(111, '(A5,2x, A8, <5>(F10.1))')   staName, dateName, (arrary(i),i=1,5)
            close(111)         
        end if
        end do
end do
close(122)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-8 19:59:39 | 显示全部楼层
oishii 发表于 2016-1-6 08:44
先建立各站点的空文件,然后边读边写:
open(122, file=infile, form='formatted', status='old')
do w ...

你好,没太懂你给的例子,所以自己试着写了一下,还是有错误,希望你能再教教我

Program main
Implicit none

Character*8 stid(1:76685) !原始数据除去表头有76685行
Real maxt(1:76685),mint(1:76685),avgt(1:76685),rain(1:76685) !
integer years(1:76685)
integer year(1:76685),month(1:76685),day(1:76685)
integer stalist(1:35) !有35个气象站
integer i,j,k
real st
integer ista
character*46 filename
     integer:: stat
!程序开始
Open(1,file='e:\station.txt',status='old')
open(2,file='e:\station5.txt',status='unknown')  
read(1,*)
do i=1,76685
Read(1,*)stid(i),years(i),maxt(i),mint(i),avgt(i),rain(i)
write(2, '(A5,2x, I8,2x,F8.1,2x,F8.1,2x, <5>(F8.1,2x))')stid(i),years(i),maxt(i),mint(i),avgt(i),rain(i)
enddo
open(122, file=infile, form='formatted', status='old')
do while(.true.)
    read(122, '(A5,2x, I8,2x,F8.1,2x,F8.1,2x, <5>(F8.1,2x))', iostat=stat)stid(i),years(i),maxt(i),mint(i),avgt(i),rain(i)
    if(stat/=0) exit
        do st=1,35
        if(stid==stalist(st) )then
            open(111, file=stalist(st)'.txt', form='formatted', status='old', position='append')
            write(111, '(A5,2x, I8,2x,F8.1,2x,F8.1,2x, <5>(F8.1,2x))')  stid(i),years(i),maxt(i),mint(i),avgt(i),rain(i)
            close(111)         
            end if
       end do
end do
Close(1)
close(2)
close(122)
end
错误.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-8 20:02:44 | 显示全部楼层
本帖最后由 wangxue910402 于 2016-1-8 20:08 编辑
f117hqh 发表于 2016-1-5 10:45
核心是fortran的格式化输入输出
第一个问题,六个数据输出在一行的话,需要控制格式
第二个问题,看起来 ...


你好,我想问一下,我按照数组输出来的时候(就是我图片里的程序,按照二维数组输出),为什么日期变成了偶数的了呢,我原来的数据日期是连续的,挑选出来后就全成偶数了,我检验了一下,发现没挑选以前,输出的时候就错,你能帮我看看到底哪里出了问题么?谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-8 20:03:57 | 显示全部楼层
尔卿不归 发表于 2016-1-6 07:56
设置一个动态数组  现把数据读入动态数组   然后if (sta='58238') then  对动态数组的某个站点的一行数据 ...

你好,我想问一下,我按照数组输出来的时候(就是我图片里的程序),为什么日期变成了偶数的了呢,我原来的数据日期是连续的,挑选出来后就全成偶数了,我检验了一下,发现没挑选以前,输出的时候就错,你能帮我看看到底哪里出了问题么?谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-11 17:04:54 | 显示全部楼层
wangxue910402 发表于 2016-1-8 19:59
你好,没太懂你给的例子,所以自己试着写了一下,还是有错误,希望你能再教教我

Program mai ...

不好意思,随手写的,有点错误…这里加个连接符  file=stalist(st)//'.txt'  
infile 就是你自己输入文件的名字,你可以在定义变量时定义一个infile,也可以直接写file=输入文件的名称。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-11 17:09:21 | 显示全部楼层
wangxue910402 发表于 2016-1-8 20:03
你好,我想问一下,我按照数组输出来的时候(就是我图片里的程序),为什么日期变成了偶数的了呢,我原来 ...

没看明白是什么问题…偶数啥意思?看原帖也看不出来…
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-12 00:17:14 | 显示全部楼层
oishii 发表于 2016-1-11 17:04
不好意思,随手写的,有点错误…这里加个连接符  file=stalist(st)//'.txt'  
infile 就是你自己输入文 ...

谢谢你的回复,我会认真改的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-15 11:06:50 | 显示全部楼层
wangxue910402 发表于 2016-1-8 20:03
你好,我想问一下,我按照数组输出来的时候(就是我图片里的程序),为什么日期变成了偶数的了呢,我原来 ...

是1楼的还是15楼的程序
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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