0

我有一个输出文件,单列,其中每 7 行是一个字符串,其他是数字(如下所示)

998.69733    
377.29340    
142.22397    
53.198547    
19.743515    
7.5493960    
timestep:  1
998.69733    
377.29340    
142.22047    
53.188023    
19.755905    
7.5060229    
timestep:  2
998.69733    
377.29337

我需要将此数据读入另一个文件,省略文本并仅保留数字并尝试循环为我的字符串分配一个虚拟对象,但由于它无法识别(AI)而出现错误。

DO 10 I = 1, 1000
 IF (MOD(I,7) == 0) THEN 
  READ (8, FMT= '(AI)') dummy
 END IF
  READ (8,*) val
  WRITE (9,*) val
10 CONTINUE

(8 - 输入文件和 9 - 输出文件分配)

我对 Fortran 很陌生,花了很多时间寻找解决方案或至少类似的问题,但没有找到任何东西。我真的很感激一些帮助。

非常感谢您提前。

4

2 回答 2

1

如果您只想跳过第七行,您可以执行“read (8, '(A)' ) dummy”,其中 dummy 被声明为字符串(即“character (len=80) :: dummy”)。一些字符是字母和其他数字无关紧要。

PS现代是写循环是“do”,“end do”......不需要行号和continue语句。

于 2011-04-12T10:01:35.300 回答
1

只需使用带有空输入项列表的列表导向输入。
此外,第七行在您的循环中被读取两次。将 read 和 writeval放在一个ELSE部分中,或者,我们的CYCLE语句:

DO I = 1, 1000
  IF(MOD(I,7) == 0) 那么
    阅读(8,*)
    循环
  万一
  读取(8,*)值
  写(9,*)验证
结束做
于 2011-04-12T13:30:50.450 回答