fortran - 如何停止 Fortran 列表定向读取 '/' 上的分隔字符串

标签 fortran gfortran

当输入中可能有 / 时,是否可以使用列表定向读取从一行读取文件路径?其应用是轻松地从我的程序的输入文件中解析命令。

显示我不想要的行为的示例问题是:

program test

    implicit none

    character(len=100) :: line, label, fname

    line="command file/path"
    read(line, *) label, fname
    print *, fname

end program test

该程序将打印文件,而不是打印文件/路径。我需要列表定向输出的原因是因为我希望用户能够在之后提供可选命令。这样的命令输入将是:

command file/path arg1 arg2 

其中可选参数的数量是可变的。如果问题不是那么容易做到,那么我将实现某种标记化子例程。

这是使用最新版本的 gfortran 的自由形式(如果有影响的话);我不限于任何特定标准。

最佳答案

在字符项的列表定向输入中,我们可以避免 *//; 通过分隔它们被视为值分隔符。例如,/ 可能出现在文件路径中:

program test

    implicit none

    character(len=100) :: line, label, fname

    line="command 'file/path'"
    read(line, *) label, fname
    print *, fname

end program test

回想一下逗号分隔值文件如何需要用逗号将值引起来。

但是,通常您会希望避免使用列表定向输入并使用更高级的输入解析方法。

关于fortran - 如何停止 Fortran 列表定向读取 '/' 上的分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66501933/

相关文章:

variables - Fortran中根据字符串动态确定变量名

ubuntu - gfortran 编译目标文件错误 crt1.o : In function `_start' :

fortran - 如何在代码中实现阶乘函数?

oop - Fortran 2003 中的类型绑定(bind)过程重载

python - Fortran double 转换为 Python float

linux - Fortran 77 从旧的 sun 机器读取未格式化的序列数据

optimization - 优化 Fortran 子例程

build - Scons - Fortran 文件的构建顺序

macos - lldb 是否与 fortran 一起工作?

integer - 在 fortran 中访问无符号整数值