2014-01-22 3 views
5

Ich möchte Newline-Zeichen in meiner Zeichenpuffervariable buff speichern. Bisher mein Code sieht wie folgt aus:Wie schreibe ich ein Newline-Zeichen in eine Zeichenvariable in Fortran?

 program TYPE_CHECK 

c newline storage in buffer 
     character(100), dimension(10) :: buff 
     integer, dimension(10) :: x 
     integer :: i 

     do i=1,10 
     x(i) = i 
     enddo 

     do j=1,10 
     write(buff(j), 1) x(j), x(j) 
1  format(' This is line ', I3, /, 
     *  ' This is newline ', I3) 
     enddo 

     do j=1,10 
     write(*, "(A100)") buff(j) 
     enddo 

     end program TYPE_CHECK 

Dies gibt den folgenden Fehler:

At line 13 of file myfoo6.F 
Fortran runtime error: End of file 

Antwort

9

Sie die intrinsische Funktion NEW_LINE verwenden können, das Zeichen zur Abfrage Newline in formatiertem Stream-Ausgabe darzustellen. Dieses Zeichen führt normalerweise das aus, was Sie möchten, wenn Sie es an die Konsole senden. Es ist wahrscheinlich am einfachsten, es mit einem separaten Zeichendatendeskriptor in Ihrer Formatspezifikation auszugeben.

Die Verwendung eines Schrägstrichbearbeitungsdeskriptors ist eigentlich eine Anforderung, um zum nächsten Datensatz weiterzugehen. Für eine interne Datei (Schreiben in eine Zeichenvariable) ist dies das nächste Array-Element. In Ihrem Beispielcode übergeben Sie einen Skalar als Zeichenvariable (also nur einen Datensatz), daher tritt ein Ende der Dateibedingung auf.

+1

in älteren Fortran würden Sie 'char (10)' für die ASCII-Zeilenumbrüche verwenden .. – agentp

Verwandte Themen