試試這個
PROGRAM test
IMPLICIT NONE
INTEGER, PARAMETER :: ascii = selected_char_KIND ("ascii")
INTEGER, PARAMETER :: ucs4 = selected_char_KIND ('ISO_10646')
INTEGER :: ix
CHARACTER(len=5,kind=ucs4) :: greeting = ucs4_"hello"
OPEN(10,FILE='test.txt')
DO ix=1,10
WRITE (10,'(A5,I4)') greeting, ix
END DO
CLOSE(10)
END PROGRAM test
...的評論...
PROGRAM test
IMPLICIT NONE
所有優秀的Fortran程序包括線implicit none
;其原因在101 Q和As Stack Overflow中解釋,我在這裏不再重複。
INTEGER, PARAMETER :: ascii = selected_char_KIND ("ascii")
INTEGER, PARAMETER :: ucs4 = selected_char_KIND ('ISO_10646')
最新的Fortran標準要求編譯器提供了字符的這兩個kind
秒。老實說,我不確定iso_10646
是否與UTF-8相同,但如果不是這樣的話,你可能會失敗。在這裏,我定義了兩個參數,用於識別稍後在程序中使用的字符種類。爲了您的目的,這些參數中的第一個是不必要的,但您也應該瞭解它。
我想你的編譯器可能支持其他字符類型,閱讀文檔。 (另外:在技術上,有第三個字符種類名稱,default
。這很可能將字符種類設置爲ascii
或iso_10646
,很可能是前者,但是如果這對您檢查編譯器的文檔很重要。 )
INTEGER :: ix
CHARACTER(len=5,kind=ucs4) :: greeting = ucs4_"hello"
在我定義一個字符變量與文本hello
這些線的第二和的種類ucs4
(其中,因爲你見上文,是一個本地代碼iso_10646
)。沒有前綴ucs4_
,字符串hello
將被解釋爲種類default
,然後在存儲到變量greeting
中時轉換爲ucs4
。在這種情況下,在ascii
和ucs4
中的字符(的表示)之間存在1:1映射的情況下,該前綴是嚴格不必要的,但是在其他情況下不會有這種情況。
OPEN(10,FILE='test.txt')
DO ix=1,10
WRITE (10,'(A5,I4)') greeting, ix
END DO
CLOSE(10)
我已經刪除了關於直接訪問和寫入文件中特定記錄的所有guff。這似乎是你的迫切需要,這一切都是沒有必要的。所以這個循環會將greeting
(即ucs4字符串hello
)和一個行索引寫入文件test.txt
10次。
END PROGRAM test
什麼用youbmean「它不工作」?避免使用這個短語,它沒有用處,也不會告訴任何事情。請明確點! –
是的,對不起,你是對的。我的意思是它創建一個文件,但它不會創建一個可讀的文件,格式可以通過例如gedit打開。 – Dadep