Fortran 每隔6行和7行打印一次
我想写一个FORTRAN程序来读取所有的行,并且我想打印输出文件中每第7行和第8行由空白行分隔的数据集。我放了一个输入文件。请告诉我 提前谢谢你Fortran 每隔6行和7行打印一次,fortran,Fortran,我想写一个FORTRAN程序来读取所有的行,并且我想打印输出文件中每第7行和第8行由空白行分隔的数据集。我放了一个输入文件。请告诉我 提前谢谢你 -4.164945E+05 3.001334E+02 -4.772577E+05 7.889016E+04 -5.561479E+05 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.088580E+05 2.997668E+02 3.848513E+04 -1.806
-4.164945E+05 3.001334E+02 -4.772577E+05 7.889016E+04 -5.561479E+05
0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.088580E+05
2.997668E+02 3.848513E+04 -1.806741E+06 5.561488E+05 0.000000E+00
0.000000E+00 0.000000E+00 0.000000E+00 2.284295E+05 0.000000E+00
0.000000E+00 0.000000E+00 9.000000E+01 9.000000E+01 9.000000E+01
0.000000E+00 5.478642E-01 0.000000E+00 0.000000E+00 0.000000E+00
0.000000E+00 4.667412E-01 -2.655381E-01 -2.928033E-01 -2.655381E-01
5.437324E-01 1.816853E-01 -2.928033E-01 1.816853E-01 6.331191E-01
-4.165192E+05 3.002662E+02 -4.773093E+05 8.116229E+04 -5.584716E+05
0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.012512E+05
2.993096E+02 1.573615E+04 -1.839001E+06 5.584725E+05 0.000000E+00
0.000000E+00 0.000000E+00 0.000000E+00 2.284295E+05 0.000000E+00
0.000000E+00 0.000000E+00 9.000000E+01 9.000000E+01 9.000000E+01
0.000000E+00 1.095372E+00 0.000000E+00 0.000000E+00 0.000000E+00
0.000000E+00 1.223969E+00 -2.234850E-04 -1.602426E-01 -2.234850E-04
1.005241E+00 2.884689E-02 -1.602426E-01 2.884689E-02 1.056905E+00
-4.165735E+05 3.013409E+02 -4.775812E+05 7.969518E+04 -5.572764E+05
0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.067039E+05
3.015952E+02 3.190769E+04 -1.818406E+06 5.572773E+05 0.000000E+00
0.000000E+00 0.000000E+00 0.000000E+00 2.284295E+05 0.000000E+00
0.000000E+00 0.000000E+00 9.000000E+01 9.000000E+01 9.000000E+01
0.000000E+00 7.080812E-01 1.157779E+00 1.385668E+00 5.455691E-01
2.982146E-01 5.921261E-01 7.954344E-02 1.724112E-01 7.954344E-02
7.981127E-01 -3.378208E-02 1.724112E-01 -3.378208E-02 7.340048E-01
-4.165731E+05 2.994772E+02 -4.772035E+05 8.034912E+04 -5.575527E+05
0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.041375E+05
2.974779E+02 2.428109E+04 -1.827365E+06 5.575535E+05 0.000000E+00
0.000000E+00 0.000000E+00 0.000000E+00 2.284295E+05 0.000000E+00
0.000000E+00 0.000000E+00 9.000000E+01 9.000000E+01 9.000000E+01
0.000000E+00 8.921716E-01 1.969410E+00 2.318855E+00 7.271637E-01
6.363283E-01 7.974565E-01 -1.911601E-01 -9.800037E-02 -1.911601E-01
7.979089E-01 -5.302858E-02 -9.800037E-02 -5.302858E-02 1.081150E+00
如果您确定您的数据都有8行,每行有一个分隔符,一行最多有80个字符,您可以这样做
character*80 :: inline
integer :: i, imod, stat
open(1,file='infile')
open(2,file='outfile',status='unknown')
i = 0
do
i = i + 1
read(1,'(80a)',iostat=stat) inline
if (stat/=0) then !EOF reached
exit
end if
imod = mod(i-1,9) + 1
if (imod>=7 .and. imod<=9) then
write(2,*) inline
end if
end do
这将在计算行数时逐行读取输入文件,直到到达文件结尾或其他读取错误,以避免无限循环。如果行号与7-8-9模9一致,则它将打印它,这将自动保留分隔线。到目前为止您尝试了什么?是第6-7行还是第7-8行?你的标题和文字不匹配。我添加了一个答案,但你真的应该先尝试一下。你熟悉fortran吗?你为什么要用fortran来解决这个问题?@Ross,我猜这个问题被分配到了OP.*轻推轻推眨眼*嗨,非常感谢!!!它正在工作。我刚开始学习FORTRAN…我想我也喜欢它。@cjana,我很高兴能帮上忙。请考虑将我的答案标记为已接受。另外:fortran对于许多应用程序来说可能非常麻烦。特别是对于这个问题中的文件和字符串操作,其他更现代的语言可能更有用。@cjana,例如,您可以使用awk脚本达到相同的效果:awk'NR%9>=7 | | NR%9==0'infle。虽然这考虑了mod9,9=0,我们也可以在fortran版本中这样做。但我的观点是,这不是一个使用fortran的特别好的领域:Hi@Andras Desk,当然!谢谢!