Fortran 90 - 阅读格式

时间:2014-05-21 16:28:48

标签: format fortran fortran90

我正在尝试在格式化文件中读取该字符串:" 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

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

2 个答案:

答案 0 :(得分:0)

假设test_data是打开文件的单元号,100是a 格式声明号。

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

答案 1 :(得分:0)

你写的读写不会做你想要的。您提供的用于阅读的输入语句宽度为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编译和测试的。