我正在阅读带有我的fortran代码的文本文件。我解析文本文件(包含一些东西,如名字和数字),最后我得到包含实数的字符串(它们是实时测量),例如:
string = 1.34
我只需通过
将这个字符串写成实数read(levelCHAR,'(f)') level
直到今天,当输入文件中的数字正好为1并且我有:
时,一切都运行良好一个月string = 1
上面的阅读声明给了我
level=0
因此,为了解决这个问题,我在read语句之前添加了:
if (index(string ,'.')<=0) then
string = trim(string )//'.'
endif
这似乎解决了这个问题。但是,我想知道我是否遗漏了某些内容,并且有一种更优雅的方法可以在一行中执行此操作,例如更换格式&#39;(f)&#39;在read语句中使用更合适的表达式。
答案 0 :(得分:1)
您的程序无效Fortran:
read(levelCHAR,'(f)') level
1
Error: Nonnegative width required in format string at (1)
form.f90:5.5:
您必须使用f5.0
等表示输入字段。或者您可以使用列表导向的输入read(levelChar,*) level
。
此外,请确保使用.0
而不是fw.d
描述符中的任何其他数字进行输入。否则整数输入会出现奇怪的结果,因为它们将乘以10**(-d)
。