2015-04-07 49 views
0

我想对一个实数的数组做一些算术运算,之后我必须将它作为字符变量的输入来读取。我用读取语句仍然我得到的错误为如何以字符的形式读取实数

单位规范必须是整数或字符变量。

我也验证了格式描述符。这里是我的一段代码

real::la(10), sl 
integer::i 
character(len=5)::lat 
character(len=7)::station 

sl=11.25 

do i=1,10 
    la = sl+ (i*0.25) 
    read(la(i),'(F5.2)')lat 
    station= lat//'xx' 
end do 
+0

在你的循环分配到整个阵列'la'。你是这个意思吗? – francescalus

回答

0

F5.2格式指定了一个real值被读出。 lat是一串字符。两者不兼容。

最简单的修复方法是读取real的变量。

或者,将格式更改为A(表示字符串),然后使用F5.2格式从lat进行内部读取。

2

当你有

read(la(i),'(F5.2)') lat 

你要求从单位la(i)(外部文件)转换成字符变量lat阅读。这不是你想要的,但也是错误的。这种错误会导致您看到的错误消息:单位编号必须是整数。

但是,将la更正为整数不是您想要执行的操作。

相反,你想要做一个内部写入字符变量lat

write(lat, '(F5.2)') la(i) 
相关问题