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

Reading integers of unknown width in Fortran

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

# 14 14 10

在 Fortran 2008 中。

我尝试使用此代码:

read(21, "(A, I,I,I)") garbage, a, b, c

但这不符合标准。 Intel Fortran 发出警告“Fortran 2008 does not allow this edit descriptor. [I]”,其他问题解释了这个问题:Nonnegative width required in format string Error: Nonnegative width required in format string at (1)

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

正如我在评论中暗示的那样,您可以使用定向列表 I/O 轻松阅读此类项目。然后编译器自己识别哪些字符属于输入列表中的每个项目并解析它们。这些项目可以用空格、逗号或换行符分隔。

read(21,*) garbage, a, b, c

这是交互式阅读内容的最常见方式,但对于解析数据文件(CSV 和类似文件)中的列表也很有用。

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