1

假设我有一个这样的字符串:

character(20) :: str="&                                                                                                                 
&1.2 &                                                                                                                                  
&2. &                                                                                                                                   
&3.32 &                                                                                                                                 
&4.223 &                                                                                                                                
"

如何像文件一样读取字符串?

例如,我试过

program main
implicit none

character(20) :: str="&                                                                                                                 
&1.2 &                                                                                                                                  
&2. &                                                                                                                                   
&3.32 &                                                                                                                                 
&4.223 &                                                                                                                                
"

integer i
real a

do i=1,4
   read(str,*) a
   print*, a
end do

end program main

但我每次只得到第一行

   1.200000    
   1.200000    
   1.200000    
   1.200000    
4

1 回答 1

4

您的字符串中有四个reals,但您将其读入一个实变量(四次)。因为每次你从相同的字符串开始,你总是得到相同的结果。

也许您应该直接将字符串读入数组(没有循环):

real a(4)

read(str,*) a(1:4)

(你可以简单地写read(str,*) a,这里只是给出范围来表示它a是一个数组......)

于 2013-10-12T19:15:22.177 回答