Fortran Coder

标题: 关于子程序读取txt文件 [打印本页]

作者: freshman    时间: 2019-2-19 19:36
标题: 关于子程序读取txt文件
本帖最后由 freshman 于 2019-2-19 21:32 编辑

我想用子程序来读取一个文件中的数据并且储存到数组中,然后另外一个子程序会使用该数组中的元素进行计算。
现在代码跑不通跪求大神帮忙看看

[Fortran] 纯文本查看 复制代码
MODULE inputpower
    IMPLICIT NONE
    REAL k(50,152)
END MODULE
[Fortran] 纯文本查看 复制代码
SUBROUTINE getpow(xx,yy)
    USE inputpower
    IMPLICIT NONE
    INTEGER i,j
    OPEN(unit=99,file='test1.txt',status='old',form = 'formatted')
        DO i=1,xx
             READ(99,*) (k(j,i) ,j=1,yy)
             !print*, (k(j,i) ,j=1,yy)
        END DO
    CLOSE(99)
END SUBROUTINE getpow(xx,yy)

[Fortran] 纯文本查看 复制代码
PROGRAM inpow  
    USE inputpower
    IMPLICIT NONE
    INTEGER na,nr
    na = 7
    nr = 7
    !read the input data
    CALL getpow(na,nr)  
   
    END PROGRAM inpow

text文件内容如下
1 1 1 1 1 1 1
2 1 1 1 1 1 1
3 1 1 1 1 1 1
4 1 1 1 1 1 1
5 1 1 1 1 1 1
6 1 1 1 1 1 1
7 1 1 1 1 1 1

问题出在了ps: 自学没几天,请大佬推荐比较好的fortran90书籍

TIM截图20190219193504.png (182.28 KB, 下载次数: 291)

TIM截图20190219193504.png

TIM截图20190219193442.png (151.55 KB, 下载次数: 256)

TIM截图20190219193442.png

TIM截图20190219193321.png (57.29 KB, 下载次数: 294)

TIM截图20190219193321.png

作者: freshman    时间: 2019-2-19 19:45
可能代码特别不规范 主要是参照了一些fortran77的代码
作者: freshman    时间: 2019-2-19 21:57
SUBROUTINE getpow(xx,yy)
    USE inputpower
    IMPLICIT NONE
    INTEGER i,j
    OPEN(unit=99,file='test1.txt',status='old',form = 'formatted')
        DO i=1,xx
             READ(99,*) (k(j,i) ,j=1,yy)
             !print*, (k(j,i) ,j=1,yy)

        END DO
    CLOSE(99)
END SUBROUTINE getpow(xx,yy)
用排除法得到是红色的两行代码有问题
作者: fcode    时间: 2019-2-19 22:02
[Fortran] 纯文本查看 复制代码
MODULE inputpower
    IMPLICIT NONE
    REAL k(50,152)
END MODULE

SUBROUTINE getpow(xx,yy)
    USE inputpower
    IMPLICIT NONE
    INTEGER i,j,xx,yy!//XX,YY需要定义
    OPEN(unit=99,file='test1.txt',status='old',form = 'formatted')
        DO i=1,xx
             READ(99,*) (k(j,i) ,j=1,yy)
             !print*, (k(j,i) ,j=1,yy)
        END DO
    CLOSE(99)
END SUBROUTINE getpow!//这里不写括号

PROGRAM inpow  
    USE inputpower
    IMPLICIT NONE
    INTEGER na,nr
    na = 7
    nr = 7
    !read the input data
    CALL getpow(na,nr)  
   
    END PROGRAM inpow


如果还有问题,请给出错误提示描述。
作者: freshman    时间: 2019-2-19 22:27
fcode 发表于 2019-2-19 22:02
[mw_shl_code=fortran,true]MODULE inputpower
    IMPLICIT NONE
    REAL k(50,152)

解决了
非常感谢!
谢谢您!!!!!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2