我必须读取一个包含数值数据(大部分为实数)的文件,但是也有一些丢失的数据用星号(*)表示。我事先不知道星号的位置,因此必须找到总的有效(数字)数据和总的缺失数据(星号)。
我尝试使用嵌套在do循环中的“选择大小写”来执行此操作,但失败了,因为
数据文件看起来像这样
1 0.673070
2 0.750597
3 *
4 0.484100
有什么建议吗?
答案 0 :(得分:1)
将来会的,请提供更多信息并发布[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),其中包含一些试图读取该代码的代码。
但是,假设您知道每一行都有一个实数或*,那么我将执行以下操作:
Character(len=8) :: LineRead
Real :: RealNumber
open(42,file='MyFile.txt')
do (whichever kind of loop you need to control the input)
read(42,'(a8)') LineRead
if (LineRead <> '* ')
read(LineRead,'(f8.6)') RealNumber
! Increment some sort of valid data counter
end if
end do
如果您不熟悉此技术,则称为从内部文件读取。任何字符变量都可以通过这种方式“读取”。