当输入中可能有 /
时,是否可以使用列表定向读取从一行读取文件路径?其应用是轻松地从我的程序的输入文件中解析命令。
显示我不想要的行为的示例问题是:
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/