Io Fortran中的逗号分隔符

Io Fortran中的逗号分隔符,io,fortran,Io,Fortran,我在Fortran中遇到了以下问题:例如,在从fmt=*的数据文件中读取字符数组或实际上的任何列表时,非引号空格和逗号都被认为是数组/列表中元素的定界符。逗号作为分隔符对我来说是个大问题 < P> >问题是:您知道FORTRAN中的任何语义选项或编译指令,允许将输入文件中的逗号当作字符而不是分隔符, 唯一的分隔符是空的?作为一个具体的例子,我希望在读取以下记录时: x,y,z 与: read (7,*) adummy 将导致adummy(标量字符变量)获取值x,y,z而不是x 欢迎提供任何帮

我在Fortran中遇到了以下问题:例如,在从fmt=*的数据文件中读取字符数组或实际上的任何列表时,非引号空格和逗号都被认为是数组/列表中元素的定界符。逗号作为分隔符对我来说是个大问题

< P> >问题是:您知道FORTRAN中的任何语义选项或编译指令,允许将输入文件中的逗号当作字符而不是分隔符, 唯一的分隔符是空的?作为一个具体的例子,我希望在读取以下记录时:

x,y,z
与:

read (7,*) adummy
将导致
adummy
(标量字符变量)获取值
x,y,z
而不是
x


欢迎提供任何帮助。

解决方案是指定与数据记录匹配的格式,即在指定格式时使用字符数据描述符:

read(7,fmt='(A)')adummy
将导致
adummy
具有值
x,y,z
,假设它是足够长的变量


但是,此方法也不会将空格视为分隔符,因此,如果要将逗号作为字符串读取,但将空格作为分隔符,通常的方法是将整个记录读取到字符变量中,然后将其拆分为单独的变量。

谢谢。格式化读取确实适用于我作为示例给出的简单情况,但正如您所指出的,它不适用于读取记录:x,y,z@user1499420我不知道你的意思-你能澄清你的问题吗?到底什么不起作用?(完整评论)谢谢。格式化读取确实适用于我作为示例给出的简单情况,但正如您所指出的,它不适用于读取记录:x,y,z,u,v,w到adummy,如果这是一个形状为(/2/)的字符,这更像我的现实问题。此外,通过输入文件中的不同记录读取数组的fmt=*功能也将丢失。在我的问题中,数据有时可能全部在同一条记录/行中,或在连续的记录/行中。我试图避免编写一个正确的解析例程,但使用fmt=*@user1499420的功能来代替它。我的意见是,为数据编写一个解析器将是最好的选择。如果您坚持使用默认格式输入,可能会有一些非标准的编译器选项提供此功能,但我不知道它们,因此您需要查看编译器的文档。谢谢,这也是我的理解,但我想了解专家的意见。我认为,有选择地允许将fmt=*的分隔符限制为仅空白,这对于未来的Fortran分期是一个非常好的主意。在这种情况下可能会有很大帮助,我想这并不罕见。