[英]Fortran format string in read statement
我在使用Fortran程序中的read語句接受格式字符串時遇到了麻煩,該程序由gfortran在OS X下編譯。
read語句和字符串構成兩行代碼,我收到的各種錯誤消息似乎取決於這兩個語句是如何並行使用的(另外,以防萬一,要讀入的數組的聲明) :
read(10, format) ( velmatt(n,row,i),m=1,3 )
format = "(11x,' x ',a3,2x,i8,6x,3f11.6)"
這會導致錯誤,
Fortran runtime error: Missing initial left parenthesis in format
我必須補充說,我還嘗試了替代格式語句的一些替代語法,並且它是由read函數調用的,因為推薦的確切形式似乎有所不同(我是fortran的新手)。 以下是一些替代方案,
read(10, 11) ( velmatt(n,row,i),m=1,3 )
11 format(11x,' x ',a3,2x,i8,6x,3f11.6)
甚至
read(10, 'format') ( velmatt(n,row,i),m=1,3 )
format = (11x,' x ',a3,2x,i8,6x,3f11.6)
其中至少有一個出錯
Fortran runtime error: Constant string in input format
其中一個也給出了這個錯誤,
Missing format label at (1)
我讀到格式語句應該是用引號括起來的parantheses,但在這種情況下我的第一種方法應該有效嗎? 因此,錯誤消息似乎是彼此互補的,還有一些我不知道的東西......
(我還不清楚在fortran中使用正確單位數的重要性,如果這是問題的一部分或全部,那就很抱歉)
無論如何,以上都沒有(加上我嘗試的更多)滿足編譯器。
您發布的示例中,只有一個
read (10,11)
是正確的。 在第一個中,您要求READ在名為FORMAT的變量中查找格式,我假設您之前聲明為CHARACTER。 如果您先分配了格式,那么它可能會有效,但這不是推薦的方法。 但實際上,該變量未初始化且沒有正確的值。
您可以像使用(10,11)情況一樣使用帶標簽的格式,也可以將格式本身放在READ中,如下所示:
read(10, "(11x,' x ',a3,2x,i8,6x,3f11.6)") ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.