是否可以使用Fortran读取包含大量数字(整数)的行?
假设我有一个只有行
的文件1 2 3
以下程序读取行中的3个整数
program reading
implicit none
integer:: dump1,dump2,dump3
read(21,*) dump1,dump2,dump3
end
所以dump1 = 1 dump2 = 3 dump3 = 3
如果我的文件只有一行,但有很多整数,如
1 2 3 4 5 6 7 8 ... 10000
是否可以在不定义10000个变量的情况下使用上述程序?
答案 0 :(得分:3)
编辑这个答案的第一段似乎很奇怪,因为OP修改了这个问题。
您对string
一词的使用最初让我感到困惑,我怀疑它也可能让您感到困惑。考虑文件中的任何字符,或者在命令行中键入字符串并不是错误的,但是当所有这些字符都是数字(散布着空格)时,将它们视为integers
会更有用。 Fortran运行时系统会
注意将一串数字字符转换为整数。
从这个角度来看,我认为你的问题可能更好地表达为如何从输入行读取整数列表?这是一种方式:
定义一个数组。在这里,我定义了一个固定大小的数组:
integer, dimension(10**4) :: dump
(我经常使用诸如10**4
之类的表达式来避免必须仔细计算0
。此步骤定义了一个捕获所有值的数组,似乎是您缺少的那个。
要从终端读取这些值,请在运行时编写
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行。