编辑这个答案的第一段可能看起来很奇怪,因为OP已经修改了这个问题。
您对string
这个术语的使用最初让我困惑,我怀疑它也可能让您感到困惑。考虑文件中的任何字符或在命令行中输入为字符串是没有错的,但是当所有这些字符都是数字(用空格散布)时,将它们想象为integers
会更有用。 Fortran运行系统将 负责将一串数字字符转换为整数。
在这种情况下,我认为你的问题可能会更好地表示为如何从输入行读取整数列表?这里有一种方法:
定义一个数组。这里我定义固定大小的数组:
integer, dimension(10**4) :: dump
(I经常使用表达式诸如10**4
,以避免必须仔细计数0
多个)。这一步,定义一个数组来捕获所有的值,似乎是你所缺少的。
从终端读取这些值,在运行时,你可能会写
write(*,*) 'Enter ', 10**4, 'numbers now'
read(*,*) dump
,这将设置dump(1)
你键入的第一个数字,dump(2)
到第二,一路到10**4
个。不用说,不建议在终端上输入这些数字,更好的方法是从文件中读取它们。这需要你回到你的
read(21,*) dump
它不会让我感到吃惊地发现,你的系统强加给一个单一的线的长度极限一些,所以你可能会试图读取多达10**4
时要更加复杂整数,例如一次读100行,就像这样。这很容易
read(*,*) dump(1:100)
将100个整数读入数组的前100个元素。编写一个循环来读取100行,每行100个整数。
我编辑了这个问题! –