在Fortran中读取未知宽度的整数

在Fortran中读取未知宽度的整数,fortran,fortran2008,Fortran,Fortran2008,我正在尝试读取此行中的整数: # 14 14 10 在Fortran 2008中 我试图使用以下代码: read(21, "(A, I,I,I)") garbage, a, b, c 但这并不符合标准。“英特尔Fortran”发出警告“Fortran 2008不允许使用此编辑描述符。[I]”,其他要求解释了此问题: 如何使用Fortran 2008正确读取未知宽度的整数?我不能简单地指定I2,因为我事先不知道整数的宽度。正如我在注释中所暗示的那样,您可以使用列表定向I/O轻松地读取类似的项。

我正在尝试读取此行中的整数:

# 14 14 10
在Fortran 2008中

我试图使用以下代码:

read(21, "(A, I,I,I)") garbage, a, b, c
但这并不符合标准。“英特尔Fortran”发出警告“
Fortran 2008不允许使用此编辑描述符。[I]
”,其他要求解释了此问题:


如何使用Fortran 2008正确读取未知宽度的整数?我不能简单地指定I2,因为我事先不知道整数的宽度。

正如我在注释中所暗示的那样,您可以使用列表定向I/O轻松地读取类似的项。然后编译器自己识别属于输入列表中每个项的字符并对其进行解析。项目可以用空格、逗号或换行符分隔

read(21,*) garbage, a, b, c
这是以交互方式读取内容的最常见方式,但对于解析数据文件(CSV和类似文件)中的列表也很有用


如果输入记录(文本文件中的一行)中没有数字,则读取将继续到下一条记录。

请对所有Fortran公式使用标记。对于特定于版本的问题,还应使用版本标记。fortran95标签有什么原因吗?你不能只使用I,它不是针对2008的,在每个版本中都是如此。您可能只是要求严格遵守Fortran 2008,即使您没有显示它。但这是事实,在过去的版本中也是如此。这是重复的,请用标签重新标记问题。这是否意味着我需要提前知道整数的宽度?对于重复的问题,我不得不表示不同意。标有问号的问题涉及书面陈述。我想读取一个未知宽度的整数。是的,你需要。您可以在许多情况下使用列表定向读取
read(21,*)
。您应该注意
垃圾
必须声明为字符串才能工作。我假设是这种情况,因为问题中有
a
描述符。