gpt4 book ai didi

arrays - Fortran 77 在运行时设置数组大小

转载 作者:行者123 更新时间:2023-12-04 04:59:33 26 4
gpt4 key购买 nike

基本上,我希望将从文件中读取的 X,Y 对输入到长度为 n 的数组中,其中 n 是文件中的行数(即 x,y 对)。不幸的是,我尝试确定文件的长度然后使用它来设置数组的大小都没有成功。如何在 Fortran 77 中完成此操作?希望我没有遗漏一些明显的东西,我更习惯于 Python 和 Java,因为它们相当简单。

附注。在问这个问题之前,我环顾四周,似乎一般的感觉是您只是将大小设置为比您期望的更大,但这似乎非常浪费内存且效率低下。

最佳答案

解决方案是使用 Fortran 90/95/2003/2008,它具有解决您的问题所需的功能,而 FORTRAN 77 则没有。读取文件一次以确定数据项的数量。倒带文件。分配所需长度的数组。再次读取文件,读入数组。

使用 Fortran 2003/2008(未测试):

use iso_fortran_env

real :: xtmp, ytmp
real, dimension (:), allocatable :: x, y
integer :: i, n
integer :: Read_Code

open (unit=75, file=...)

n = 0
LengthLoop: do

read ( 75, *, iostat=Read_Code) xtmp, ytmp

if ( Read_Code /= 0 ) then
if ( Read_Code == iostat_end ) then
exit LengthLoop
else
write ( *, '( / "read error: ", I0 )' ) Read_Code
stop
end if
end if

n = n + 1

end do LengthLoop

allocate (x(n))
allocate (y(n))

rewind (75)

do i=1, n
read (75, *) x(i), y(i)
end do

close (75)

关于arrays - Fortran 77 在运行时设置数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com