回 帖 发 新 帖 刷新版面

主题:请教文件读取问题。

问题1:

有一简单程序,如下:

PROGRAM aa
IMPLICIT NONE
REAL(8),DIMENSION(n):: a
REAL(8),DIMENSION(n):: b
........

对于数组的维数 n,想通过文件(如:data.txt)读取,不知如何做到一点。

问题2:
Module可以进行数据共享,在程序间进行数据传递。假设有如下一数据模块

Module aa
IMPLICIT NONE

REAL(8), PARAMETER :: a1
REAL(8), PARAMETER :: a2
REAL(8), PARAMETER :: a3

End Module aa

类似问题1,想在程序最初通过读取文件中的数据给a1,a2,a3等赋值,然后在程序中的各部分通过Use Module aa引用这部分数据,如何做到这一点

回复列表 (共2个回复)

沙发

对于您的第一个问题,可以定义可变数组。
real*8,allocatable::a(:),b(:)
在读出数组的大小后,
allocate(a(n))
allocate(b(n))
就可以了。为了避免错误,可以在前面加入
if (allocated(a)) deallocate(a)
判断当前a是否已经分配了大小,因为不能重复分配。程序写大了,容易出现这个问题。

对于您的第二个问题,不能用parameter,而应该使用save,具体来讲:
real*8,save::a1,a2,a3
然后读取文件,将值赋给a1,a2,a3就可以了。但是要注意的是,程序中任何改变这些参数的值都会影响其他子程序或者函数对这些值的引用。所以要小心。尽量将这些参数的修改集中到一个子程序中,不然后期调试搞死人。

板凳

非常感谢,真是太感谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册