1

是否可以使用 Fortran 读取包含大量数字(整数)的行?

假设我有一个只有一行的文件

1 2 3

以下程序在一行中读取 3 个整数

program reading 
implicit none
integer:: dump1,dump2,dump3

read(21,*)  dump1,dump2,dump3

end

所以转储1=1转储2=3转储3=3

如果我有一个文件只有一行但有很多整数,比如

1 2 3 4 5 6 7 8 ...  10000

上述程序是否可以在不定义 10000 个变量的情况下工作?

4

1 回答 1

3

编辑这个答案的第一段可能看起来很奇怪,因为OP已经修改了这个问题。

您对这个词的使用string最初使我感到困惑,我怀疑它也可能使您感到困惑。将文件中的任何字符或在命令行中键入的字符串视为字符串并没有错,但是当所有这些字符都是数字(穿插空格)时,将它们视为integers. Fortran 运行时系统将负责将一串数字字符转换为整数。

鉴于此,我认为您的问题可能更好地表达为如何从输入行读取整数列表? 这是一种方法:

定义一个数组。这里我定义了一个固定大小的数组:

integer, dimension(10**4) :: dump

(我经常使用诸如10**4避免必须0仔细计算 s 的表达方式)。这一步,定义一个数组来捕获所有的值,似乎是你所缺少的。

要在运行时从终端读取这些值,您可以编写

write(*,*) 'Enter ', 10**4, 'numbers now'
read(*,*) dump

这将设置dump(1)为您键入的第一个数字,dump(2)第二个,一直到10**4-th。不用说,不建议在终端输入该数量的数字,更好的方法是从文件中读取它们。带你回到你的

read(21,*) dump

我不会惊讶地发现您的系统对单行的长度施加了一些限制,因此在尝试读取尽可能多的10**4整数时可能必须更加复杂,例如一次读取 100 行,类似的东西。这很容易

read(*,*) dump(1:100)

将 100 个整数读入数组的前 100 个元素。编写一个循环来读取 100 行,每行 100 个整数。

于 2013-10-09T12:23:19.447 回答