Fortran OPEN语句中'file=*'参数的含义是什么?
Fortran 77中OPEN语句
file=*的含义与用途 在Fortran 77里,file=*是OPEN语句的合法参数,它的核心作用是将指定的单元关联到系统预连接的标准I/O流,而非打开一个磁盘文件。具体细节如下:
- 代表的对象:
file=*指向的是系统默认的标准输入(stdin,通常对应单元号5)和标准输出(stdout,通常对应单元号6)。这些流是程序启动时就已预连接好的,无需显式打开也能直接使用,但用file=*显式执行OPEN操作,是明确确认单元与标准流的绑定关系。 - 与标准输入/管道的关系:是的,它完全支持标准输入读取和管道操作。当你通过
OPEN(UNIT=*, FILE=*)或指定具体单元号(比如OPEN(UNIT=5, FILE=*))后,对该单元的READ/WRITE操作就会直接和stdin/stdout交互。比如:PROGRAM STDIO_TEST CHARACTER*20 INPUT_STR
C 显式绑定单元5到标准输入
OPEN(UNIT=5, FILE=)
READ(5, '(A)') INPUT_STR
C 直接用单元(默认关联stdout)输出
WRITE(*, '(A)') "你输入的内容是: ", INPUT_STR
END
这个程序可以通过管道传递输入(比如在shell中执行`echo "Hello Fortran" | ./stdio_test`),或者通过重定向读取文件(`./stdio_test < input.txt`),都能正常工作。 - **额外说明**:Fortran 77中预连接的标准错误流(stderr,通常是单元号0)也可以用类似方式处理,不过`file=*`主要针对stdin和stdout。另外,预连接单元无需显式OPEN也能直接读写,`file=*`更多是用于明确代码意图,或者在某些需要重新绑定单元的场景下使用。 内容的提问来源于stack exchange,提问作者kris44dad
相关产品推荐
相关产品推荐

