[英]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.