4

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

# 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,因为我事先不知道整数的宽度。

4

1 回答 1

3

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

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

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

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

于 2017-10-06T16:29:34.743 回答