Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
read语句中的Fortran格式字符串_Fortran_Format - Fatal编程技术网

read语句中的Fortran格式字符串

read语句中的Fortran格式字符串,fortran,format,Fortran,Format,我很难让Fortran程序中的read语句接受格式字符串,该程序由gfortran在OS X下编译 read语句和字符串构成了两行代码,我收到的各种错误消息似乎取决于如何并行使用这两条语句(加上,以防万一,要读入的数组声明): 这导致了错误 Fortran runtime error: Missing initial left parenthesis in format 我必须补充的是,我还尝试了format语句的几种替代语法,以及read函数对其的调用,因为推荐的确切形式似乎有所不同(我对f

我很难让Fortran程序中的read语句接受格式字符串,该程序由gfortran在OS X下编译

read语句和字符串构成了两行代码,我收到的各种错误消息似乎取决于如何并行使用这两条语句(加上,以防万一,要读入的数组声明):

这导致了错误

Fortran runtime error: Missing initial left parenthesis in format
我必须补充的是,我还尝试了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) 
我读到格式声明应该用引号括起来,但在这种情况下,我的第一种方法应该有效吗?因此,错误消息似乎是相互补充的,我还遗漏了一些东西

(我还不清楚在fortran中使用正确的单元号的意义,如果这是问题的一部分或全部,那么很抱歉)


无论如何,上面的任何一个(加上我尝试过的更多)都不能让编译器满意

在您发布的示例中,只有带有

read (10,11)
这是正确的。在第一个例子中,您要求READ在名为format的变量中查找格式,我假设您在前面声明为CHARACTER。如果您先指定了格式,它可能会工作,但这不是推荐的方法。但实际上,该变量未初始化,并且没有正确的值

您可以像处理(10,11)案例那样使用带标签的格式,也可以像下面这样将格式本身放入阅读框中:

read(10, "(11x,' x   ',a3,2x,i8,6x,3f11.6)") ...

在read语句中引用
format
后,您真的设置了它的值吗?也就是说,第一个示例是否正确显示了您使用的行的顺序?读取是否在Absolft Pro Fortran中工作?您将向编译器传递哪些选项?@francescalus行的顺序与程序中使用的相同,是的,但当我在程序开头使用其他初始化设置format命令时,错误消息仍然是一样的。@MichaelShopsin我真的不确定-我怎么知道我使用的是Absolft Pro版本的fortran?@JSmoov有许多用于MacOS X的fortran编译器,它们的行为可能略有不同。另外,F77与F95/99可以更改接受的格式声明。感谢Steve的建议,我已经尝试了两种方法,但现在我收到了另一种错误消息,“在spectrum.f90文件(单位=10,文件='fort.10'的第51行)Fortran运行时错误:输入格式的常量字符串(11x,'x',a3,2x,i8,6x,3f11.6)“哦,我错过了。不能将常量字符串置于READ语句中使用的格式。这是你在写作中会用到的东西。
read(10, "(11x,' x   ',a3,2x,i8,6x,3f11.6)") ...