24小时热门版块排行榜    

查看: 938  |  回复: 2

cmwhoknows

新虫 (初入文坛)

[求助] 请问怎么用fortran定位文件中的特定行并输出 已有1人参与

本人接触fortran不久,现有一数据想通过fortran处理,有个问题不知如何实现

文件是格式化文件,每行都有好几列数据,现在想定位每行第一个数据等于某特定值的那一行,并把该行后面几列的数据按顺序输出。请问各位如何实现?

一个简单的例子,比如数据为
1  22  5  98
2  66  9  77
3  45  8  89
2  98  7  14
1  89  8  74
2  86  2  36

怎么输出第一个数字为2的那几行后面几列的内容呢?

多谢了各位!!!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wz_work

木虫 (小有名气)


jjdg: 金币+1, 感谢参与 2017-09-15 00:15:53
do循环:读取第一个字符,判断,若为2,则backspace,重新按格式读取该行;否则,继续读下一行。该方法前提,首个数字为个位数。

发自小木虫IOS客户端
生命的长河是多么的迂回,希望又是多么的雄壮。
2楼2017-09-14 08:36:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

majun150

铁杆木虫 (小有名气)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢参与 2017-09-15 00:16:01
思路:读入数据,判断,然后输出
具体实现:
program main
  implicit none
  
  integer :: a, b, c, d, ios
  
  open(10,file="input.txt",status='old')   ! 输入文件
  open(20,file="out.txt",status='replace') ! 输出文件
  
  do while(.true.)
    read(10,*,iostat=ios) a, b, c, d
    if(ios/=0) exit                        ! 判断是否读到文件末尾,若是,则退出循环
    if(a==2) write(20,*) b, c, d           ! 判断是否等于2,若是,则输出后面几位数到输出文件
  end do
  
  close(10)
  close(20)
  
end program main
3楼2017-09-14 08:45:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cmwhoknows 的主题更新
信息提示
请填处理意见