2017-10-25 2 views
0

Dies ist mein Code:1D-Array-Format zu schreiben

Program Array_Output 

Implicit none 

Integer :: i , Size_0 
Integer , allocatable :: Array_0 (:) 
Character , parameter :: fmt_0 = '()' !How to get: 'size_0(1X,i3)' 

Write(*,*)"Enter the number:" 
Read(*,*) Size_0 

Allocate(Array_0(Size_0)) 

Do i = 1 , Size_0 

    Array_0(i) = i + 4 

End Do 

Open(Unit = 16, File='Output.txt', Status = 'Unknown', action = 'Write') 

    Write(16, fmt_0) (Array_0(i), i = 1 , Size_0) 

Close(Unit = 16) 

End Program Array_Output 

Meine Absicht mit diesem Code ist output Format zu schreiben, die Size_0 Nummer eingegeben enthält. Wie schreibe ich diese Nummer im Format nach der Eingabe dieser Nummer von der Tastatur?

+0

Bitte markieren, nicht alle Fortran-Versionen Sie passen. Wenn Sie eine bestimmte Fortran-Version benötigen, verwenden Sie das entsprechende Tag. Wenn Sie alles verwenden können, was in modernen Versionen funktioniert, markieren Sie einfach Fortran. Nicht, dass die Lösung in der folgenden Antwort (auch in den Links enthalten) Fortran 2008 ist, also nicht Ihren Tags entspricht. –

+0

Ok. Kannst du mir zeigen, wie man in diesem Fall den Verkettungsoperator '//' benutzt? –

+0

Ich verstehe nicht, was du meinst. Benutze es für was? In welchem ​​Fall? –

Antwort

2

Ich bin mir nicht sicher, ob/wann es Standard wurde, aber ich verwende dafür das Format (*(1X, I3)).

Wenn das nicht funktioniert, müssen Sie mehr kreativ werden:

character(len=len('(___(1X, I3))')) :: fmt_0 

... 

write(fmt_0, '(A1, I3, A)') "(", size_0, "(1X,I3))" 
write(16, fmt_0) Array(1:size_0)