簡體   English   中英

fortran 90更改數組類型/廣播

[英]fortran 90 Change array type/cast

是否可以將雙精度類型數組的類型(或復制類型)更改為char?

我的目標是將准確的數據與字符串混合,然后寫入.txt文件。


有了您的提示,我可以看到以下代碼:

Program logArray

Implicit None

Integer, Parameter :: wp = Selected_real_kind( 12, 70 )

Real( wp ), Dimension( 1:5 ) :: vals
Character( Len = 40 ), Dimension( 1:5 ) :: stuff

character (40) :: fileName
Integer :: i,stat


Call Random_number( vals )

write(*,*) 'Printing Values from Real array'
do i = 1, 5
    write(*,*) 'vals', i, vals(i)
end do


Write( stuff, '( "Value ", i1, " is ", f20.16 )' ) &
   ( i, vals( i ), i = 1, Size( vals ) )

fileName='log.txt'

open(2, file=fileName, status='replace', iostat=stat)
    if (stat /= 0) then
        write(*,*) fileName, ' The file  cannot be opened !'
        go to 20
    end if

    !Write( *, '( 99999( a, :, / ) )' ) stuff  
    Write( 2, '( 99999( a, :, / ) )' ) stuff 

    close(2)


    20 write(*,*) 'File Closed' 

End Program logArray

但是,如果我想在log.txt上寫類似的東西,我還是不明白

“ -----價值標題1 ---------”

值1為0.9975595900926172
值2是0.5668247076112733

“ -----價值3意味着愛-------”
值3是0.9659153754961249
值4是0.7479276854714322
值5是0.3673908973747557

我是Fortran的新手。 我過去經常用周期寫入文件,您的“魔術”指令以不同的方式執行操作,但我不明白如何以最有利的方式進行操作。

非常感謝您的幫助

不太清楚您的意思,但是可能需要一個內部文件-這就是在Fortran中如何將數字數據轉換為字符形式。 這是一個例子:

[luser@cromer stackoverflow]$ cat char.f90
Program char

  Implicit None

  Integer, Parameter :: wp = Selected_real_kind( 12, 70 ) 

  Real( wp ), Dimension( 1:5 ) :: vals

  Character( Len = 40 ), Dimension( 1:5 ) :: stuff

  Integer :: i

  Call Random_number( vals )

  Write( stuff, '( "Value ", i1, " is ", f20.16 )' ) &
       ( i, vals( i ), i = 1, Size( vals ) )

  Write( *, '( 99999( a, :, / ) )' ) stuff

End Program char
[luser@cromer stackoverflow]$ nagfor -C=all -C=undefined char.f90
NAG Fortran Compiler Release 5.3.1 pre-release(904)
[NAG Fortran Compiler normal termination]
[luser@cromer stackoverflow]$ ./a.out
Value 1 is   0.5247509555250293         
Value 2 is   0.2338414404620047         
Value 3 is   0.8165253430643411         
Value 4 is   0.2788076219798084         
Value 5 is   0.9609032005446272         

  Write( stuff, '( "Value ", i1, " is ", f20.16 )' ) &
       ( i, vals( i ), i = 1, Size( vals ) )

是做魔術的人-它根據給定的格式寫出val,但不是寫到文件而是寫到字符數組中,該數組的每個元素都充當“文件”中的記錄

我希望這是有道理的。 具體來說,我們需要更多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM