我在FORTRAN中有两个问题(我是这种语言的新手)。
我有以下代码行:
OPEN(UNIT=79, FILE='sampling.txt', FORM='FORMATTED')
READ(79,*) NP1,NP2,IW
NP1,NP2,IW被声明为整数。
开放的'FORMATTED'是什么?我在读什么数据? READ线是否读取一行并将数据放入NP1,NP2,IW?数据逗号分隔了吗?空间分开?
我的下一个问题是:
D_IN = (RD/1000000)**(2./3.)/9.81**(1./3.)
这条线做什么? (D_IN和RD是REAL * 8)有人可以将其转换为C吗?
答案 0 :(得分:1)
“格式化”基本上是指文本输出 - 即人类可读。替代方案是“未格式化”,它允许处理器使用位和字节(或其等价物)而不是文本来写入文件。在C中,区别在库调用级别 - fprintf(~formatate)与fwrite(~notformatted)。
您的读取语句使用所谓的列表定向格式(由括号列表的第二个位置中的*
指定) - 输入的格式根据输入中的项目列表确定,而不是由程序员明确指定。该语言有一套关于如何在列表定向格式下翻译输入的规则 - 这些规则在穿孔卡片的当天很有意义,但可能会让今天的用户感到惊讶。作为残酷不完整的摘要 - 将从文件中读取记录(可能是多行),直到读取了三个值。这些值将被解释为整数。记录中的值可以用逗号或空格分隔。
假设粗体格式是无意的(如果没有,该行是语法错误,Fortran 90处理器将为您提供诊断,在C语言中获取语法错误的方式的数量相当大)以D_IN
开头的行是赋值语句。 =
右侧表达式的值将分配给左侧的变量。等效的C几乎是一个文字转录(你通常需要在浮点常量之后附加f
来使用类似的数字类型,但这取决于你的Fortran处理器和C实现的具体情况。)
答案 1 :(得分:0)
格式化文件或多或少是文本文件。格式化表示数字和其他变量存储为字符。否则,文件的实际格式由您决定。在您的示例中,read语句中的*表示所谓的“列表定向格式”,它使处理器在写入和读取时有很大的自由度。如果您需要更多,格式化的I / O是更困难的Fortran方面之一,您应该研究web上的众多资源。
另一个问题:运营商**
是电力运营商。如果第二个操作数不是一个小整数,则在翻译时使用C中的函数pow()
。