gpt4 book ai didi

fortran - Fortran 90 中的标准输入和输出单位?

转载 作者:行者123 更新时间:2023-12-02 09:53:13 25 4
gpt4 key购买 nike

如何在 Fortran 中读取和写入标准输入、输出和错误流 stdinstdoutstderr?我听说过写入 stderr,例如,usedwrite(5, fmt=...),使用 5 stderr 的单位,我知道写入 stdout 的方法是使用 write(*, fmt=...).

如何使用 ifort 编译器读取和写入标准输入和输出单元?

编译器版本:

Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 10.0 Build 20070426 Package ID: l_fc_p_10.0.023 Copyright (C) 1985-2007 Intel Corporation. All rights reserved

最佳答案

如果您有 Fortran 2003 编译器,则内部模块 iso_fortran_env定义了变量input_unitoutput_uniterror_unit,分别指向标准输入、标准输出和标准错误。

我倾向于使用类似的东西

#ifdef f2003
use, intrinsic :: iso_fortran_env, only : stdin=>input_unit, &
stdout=>output_unit, &
stderr=>error_unit
#else
#define stdin 5
#define stdout 6
#define stderr 0
#endif

在我的输入/输出例程中。虽然这当然意味着 preprocessing您的源文件(要使用 ifort 执行此操作,请在编译源代码时使用 -fpp 标志或更改源文件扩展名 .f.F 或从 .f90.F90)。

另一种方法是编写您自己的非内在 iso_fortran_env 模块(如果您没有 Fortran 2003 编译器),如所述 here (此答案发布后此链接已失效)。在此示例中,他们使用一个模块:

module iso_fortran_env

! Nonintrinsic version for Lahey/Fujitsu Fortran for Linux.
! See Subclause 13.8.2 of the Fortran 2003 standard.

implicit NONE
public

integer, parameter :: Character_Storage_Size = 8
integer, parameter :: Error_Unit = 0
integer, parameter :: File_Storage_Size = 8
integer, parameter :: Input_Unit = 5
integer, parameter :: IOSTAT_END = -1
integer, parameter :: IOSTAT_EOR = -2
integer, parameter :: Numeric_Storage_Size = 32
integer, parameter :: Output_Unit = 6

end module iso_fortran_env

正如其他答案中所述,0、5 和 6通常stderrstdinstdout (对于 Linux 上的 ifort 来说是这样),但 Fortran 标准定义了这一点。使用 iso_fortran_env 模块是可移植地写入这些单元的正确方法。

关于fortran - Fortran 90 中的标准输入和输出单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com