如果字符由整数组成(即没有点)

时间:2016-03-07 10:47:19

标签: io fortran

我正在阅读带有我的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语句中使用更合适的表达式。

1 个答案:

答案 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)