【问题标题】:Fortran 90 - reading formatFortran 90 - 阅读格式
【发布时间】:2014-05-21 16:28:47
【问题描述】:

我正在尝试在格式化文件中读取该字符串:" PARAMETER (NE_M=10,NL_M=12)"

我想将12 替换为11

我试着像这样阅读刺痛:

integer :: i
character(len=30) :: text
10 format(6x,24a,2i) text,i
read(text_data,10) text, i
write(6,100) text, 11

但它不起作用。任何的想法?

【问题讨论】:

  • 什么意思“它不起作用?”,这样的描述不是很有帮助。

标签: format fortran fortran90


【解决方案1】:

你写的读写不会做你想做的。您提交阅读的输入语句是 33 个字符宽,您的格式仅占其中 32 个字符,并且您的写入不会包含结束 )

如果您不需要捕获输入中的12,请考虑以下代码。

program test

character(len=30) :: text
101 format(a30, i2, ')')
open(unit=10, file='testinput.f')
read(10,101) text 
write(*,101) text, 11

end program

以及文件testinput.f中的输入(带6个前导空格):

      PARAMETER (NE_M=10,NL_M=12)

运行时,产生输出:

% ./test                     
      PARAMETER (NE_M=10,NL_M=11)

此代码使用 GNU gfortran 4.8.2 编译和测试。

【讨论】:

  • +1。不知道为什么这还没有被赞成。顺便说一句,作为 FORTRAN 标签的顶级用户之一,我想你会很高兴看到这个:mattermodeling.stackexchange.com/q/6252/5 在一个全新的 SE 网站上!
【解决方案2】:

假设 test_data 是打开文件的单元号,100 是 格式语句编号。

integer :: i
character(len=30) :: text
10 format(6x,a24,i2)
read(text_data,10) text, i
write(6,100) text(:24), i

解决其他问题:

integer :: i
character(len=30) :: text
open(unit=20,file='filename')
10 format(6x,a24,i2)
read(20,10) text, i
write(6,10) text(:24), i

【讨论】:

  • 我个人认为在write 语句中使用10010 来标记format 语句只会让不熟悉Fortran 的读者感到困惑。
猜你喜欢
  • 2012-09-03
  • 1970-01-01
  • 2013-02-14
  • 2013-08-02
  • 1970-01-01
  • 2013-06-27
  • 2010-11-26
  • 2010-10-24
  • 2015-11-28
相关资源
最近更新 更多