簡體   English   中英

用可變長度字符串初始化 fortran 字符數組

[英]initialize fortran character array with variable length strings

我有一個代碼,我在其中設置了一個帶有一組默認“選項”的字符數組,我可能希望或不希望在代碼執行期間覆蓋它。 如果我用所有相同長度的字符串(小於或等於最大可能長度 5)初始化數組,則代碼有效:

PROGRAM test
  character(len=5) :: s(3)=["a","b","c"]
  s(1)="12345678"
  print *,s
END PROGRAM test

output

12345b    c    

但是如果字符串是可變長度的。

character(len=5) :: s(3)=["a","bb","c"]

然后我得到一個編譯錯誤:

Error: Different CHARACTER lengths (1/2) in array constructor at (1)

我可以通過填充空格來使所有字符串都像這樣相等

 character(len=5) :: s(3)=["a ","bb","c "]

但這對於我的實際示例來說有點乏味,因為我有一些很長的字符串,所以在大聲計數的同時按下空格鍵......有沒有辦法用變量初始化字符 arrays長度變量,即某種自動填充?

您需要在數組構造函數中手動指定類型規范,如

character(len=5) :: s(3) = [character(len=5) :: "a", "bb", "c"]

這會將數組中的每個元素轉換為相同的類型character(len=5) ,這樣數組構造函數是合法的。

暫無
暫無

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

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