我已经检查过类似的帖子。解决方案由 MSB 在此处Reading data file in Fortran with known number of lines but unknown number of entries in each line 给出
所以,我遇到的问题是我试图从文本文件中读取输入。在一行中应该有 3 个变量。但有时输入文件可能有 2 个变量。在这种情况下,我需要将最后一个变量设为零。我尝试将 READ 语句与 IOSTAT 一起使用,但如果只有两个值,它会转到下一行并读取下一个可用值。当没有第三个值时,我需要在读取 2 个值后让它停在第一行。
我找到了一种方法来做一个评论/除了我试图阅读的类型之外(在这种情况下,我正在阅读浮点数,而评论是一个字符)这使得 IOSTAT>0 并且我可以将其用作查看。但如果在某些情况下我可能没有该评论。我想确保它甚至可以正常工作。
部分代码
read(15,*) x
read(15,*,IOSTAT=ioerr) y,z,w
if (ioerr.gt.0) then
write(*,*)'No value was found'
w=0.0;
goto 409
elseif (ioerr.eq.0) then
write(*,*)'Value found', w
endif
409 read(15,*) a,b
read(15,*) c,d
输入文件的形式是
-1.000 abcd
12.460 28.000 8.00 efg
5.000 5.000 hijk
20.000 21.000 lmno
即使没有“8.00 efg”,我也需要让它工作
对于这种情况
-1.000 abcd
12.460 28.000
5.000 5.000 hijk
20.000 21.000 lmno
我不能使用 MSB 建议的字符串方法。还有其他方法吗?