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

文字列には 4 つrealの s がありますが、それを 1 つの実数変数に読み込みます (4 回)。毎回同じ文字列で開始するため、常に同じ結果が得られます。

おそらく、文字列を配列に直接(ループなしで)読み込む必要があります。

real a(4)

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

(単純に書くことができます。ここでは配列であるread(str,*) aことを示すために範囲が与えられています...)a

于 2013-10-12T19:15:22.177 に答える