Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 从数组而不是文件中读取_Fortran - Fatal编程技术网

Fortran 从数组而不是文件中读取

Fortran 从数组而不是文件中读取,fortran,Fortran,我有一个现有的Fortran 77程序,其中输入值是从输入文件读取的 read (unit=*, fmt=*) value 每次调用read语句时,它都会自动跳到文件中的下一行 是否可以用另一个数据容器(如数组)替换“引用”索引 例如: read (myarray, fmt=*) value 我试过了,但它总是读取第一个数组元素,不会自动跳转到下一个元素 我必须将每个read(unit=*,…)更改为read(array(I),…),并分别增加I以进入下一个元素 由于程序非常庞大,我正在寻找

我有一个现有的Fortran 77程序,其中输入值是从输入文件读取的

read (unit=*, fmt=*) value
每次调用read语句时,它都会自动跳到文件中的下一行

是否可以用另一个数据容器(如数组)替换“引用”索引

例如:

read (myarray, fmt=*) value
我试过了,但它总是读取第一个数组元素,不会自动跳转到下一个元素

我必须将每个
read(unit=*,…)
更改为
read(array(I),…)
,并分别增加
I
以进入下一个元素

由于程序非常庞大,我正在寻找一种方法来保留现有的read语句,并且只更改数据源

因此,
单元
不是一个整数值,而是一个数组,其中每个元素都是我输入文件中的一行

read (unit=*, fmt=*) value
有人有主意吗

我试图用代码描述这个问题: (input_file.input仅包含15行数字1到15)


是的,在您的示例中,您必须始终使用
(i)
语法读取相应的数组元素。我看不到别的办法

但是,通常可以在多个记录中使用字符数组作为文件,而无需使用元素索引。考虑这一点:

integer :: i, n=15
character*130, dimension(100) :: inp_values
character*130 :: value
integer :: values(100)

do i = 1, n
    write(value,*) i

    inp_values(i) = value
end do

read(inp_values,'(*(i130,/))') values(1:n)

write(*,*) values(1:n)
甚至

read(inp_values,*) values(1:n)

请务必记住,内部文件不会跟踪其打开位置。该位置仅在每个
write
read
语句中有效。

与外部文件不同,内部文件没有持久位置的概念(在输入/输出语句之间)。在这方面,如果希望一条read语句从一条记录传输,下一条read语句从另一条记录传输,则必须直接引用这些记录

但是,您没有显示您真正想要如何使用输入。如果您可以使用单个read语句重新写入输入,则相应的记录将成为源

例如,如果您可以重写

do i=1,5
   read(unit, '(I5)') x(i)
end do
作为


然后,您可以轻松切换到使用内部文件。

欢迎,请阅读欢迎。学习问题编辑器的格式设置功能将使您的问题更具可读性。很抱歉,您向我们展示的代码远远不够。您必须告诉我们如何声明这些数组以及它们是什么数据类型。它们是
字符
字符串吗?同时向我们展示实际使用
read
语句的代码。你能在一条语句中而不是在循环中进行更多的阅读吗?一个隐含的可能吗?我们必须看到更多的代码。嗨,弗拉基米尔,你是对的,我发现很难解释我的问题。。很抱歉我编辑了这篇文章并添加了一些代码。基本上,我的问题是,如果我从文件中读取,read语句总是跳到下一行,如果我从数组中读取,则不会跳到下一行。我希望将当前直接从输入文件读取的所有read语句保留在代码中(整数::inpid),并将inpid的数据类型更改为数组(字符,维度::inpid)如果目标是尽可能保持代码不变,则可以将数组写入文件并读回..了解字符数组很好。。但就我而言,恐怕我必须更改代码。非常感谢你!非常感谢,我对内部和外部文件一无所知。在我的情况下,我必须更改代码中的read语句并直接引用它们。我对输入有很大的限制。
read(unit, '(I5,/)') x(1:5)