我正在尝试在格式化文件中读取该字符串:" 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
但它不起作用。任何的想法?
答案 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编译和测试的。