Fortran Coder

查看: 14656|回复: 4
打印 上一主题 下一主题

[文件读写] fortran无法读取txt文件,求前辈指导

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
27 元
贡献
11 点
跳转到指定楼层
楼主
发表于 2018-2-5 16:01:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
小白求各位指点下!
文本文件读取类型是未定义的,手动输入了一列数字,但是使用数组读取的时候,txt的数据无法读入到数组中。文本文档如图片的附件所示。

调试运行中显示: access=UNDEFINE
form=UNDEFINE
nextrec=           0
forrtl: severe (59): list-directed I/O syntax error, unit 12, file E:\near\6666666666666\降雨量模型导出和计算\尝试.txt
Image              PC        Routine            Line        Source
libifcoremdd.dll   1005BB23  Unknown               Unknown  Unknown
降雨应力期矩阵化.  00BA1DC0  _MAIN__                    37  鐭╅樀鍖?f90
降雨应力期矩阵化.  00BA4962  Unknown               Unknown  Unknown
降雨应力期矩阵化.  00BA2D79  Unknown               Unknown  Unknown
降雨应力期矩阵化.  00BA2EBD  Unknown               Unknown  Unknown
KERNEL32.DLL       73ED8654  Unknown               Unknown  Unknown
ntdll.dll          76F94A77  Unknown               Unknown  Unknown
ntdll.dll          76F94A47  Unknown               Unknown  Unknown

代码如下:
[Fortran] 纯文本查看 复制代码
program juzhenhua    implicit none
    integer i,j,stress,nstress,nrow,ncol
    integer rowbe,colbe,rowen,colen
    REAL, save,dimension (:,:,:), allocatable :: darray  
    character(len=8)::form,access
    integer::nr
    i=1
    j=1
    stress=1
    write(*,*) "输入应力期"
    read(*,*) nstress
    write(*,*) "输入行数"
    read(*,*) nrow
    write(*,*) "输入列数"
    read(*,*) ncol
    write(*,*) "起始行号"
    read(*,*) rowbe
    write(*,*) "起始列号"
    read(*,*) colbe
    write(*,*) "结束行号"
    read(*,*) rowen
    write(*,*) "结束列号"
    read(*,*) colbe

    allocate (darray(1:nrow,1:ncol,1:nstress))
    inquire (file="E:\near\6666666666666\降雨量模型导出和计算\尝试.txt",ACCESS=access,form=form,nextrec=nr)
    write(*,*)"access=",access
    write(*,*)"form=",form
    write(*,*)"nextrec=",nr

    open(unit=12,file="E:\near\6666666666666\降雨量模型导出和计算\尝试.txt")
    rewind(12)
    do stress=1,nstress
        do i=1,nrow
            do j=1,ncol
            read(12,*)darray(i,j,stress)
                        write(*,*)darray(i,j,stress)
            enddo
        enddo
    enddo
    close(12)

    open(unit=11,file="E:\near\6666666666666\降雨量模型导出和计算\降雨shuchu.txt")
    write(11,*) "1 41 1"
    do stress=1,nstress
        write(11,*) "1 -1"
        write(11,*) "INTERNAL 1.0 (free) 0"
        do i=rowbe,rowen
            do j=colbe,colen
                write(11,*)darray(i,j,stress)
            enddo
        enddo
    enddo 
    close(11)
    deallocate (darray)
        read(*,*)
    end program juzhenhua







QQ拼音截图20180205155653.png (2.38 KB, 下载次数: 325)

QQ拼音截图20180205155653.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2018-2-5 18:26:56 | 只看该作者
你不能查询文件的 access 和 form
你只能查询一个已打开的文件通道号的 access 和 form

注意,access 和 form 并不是文件本身的属性,而是你打开的方式。你可以用任何打开方式打开任何文件。(当然有些是不合时宜的)

检查一下你的txt文件的编码,是否被你的编译器支持。

3

帖子

1

主题

0

精华

新人

F 币
27 元
贡献
11 点
板凳
 楼主| 发表于 2018-2-5 20:46:53 | 只看该作者
vvt 发表于 2018-2-5 18:26
你不能查询文件的 access 和 form
你只能查询一个已打开的文件通道号的 access 和 form

txt的编码是UTF-8无BOM编码格式。
我去掉inquire部分的语句,单单读取txt内的数据也是运行不了
我还有一个导出来的数据文件(A),两个txt文件的内容一样,可是一个能够读取,一个不能读取。不知道错在哪里。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2018-2-6 10:58:15 | 只看该作者
试试改成 ANSI 编码。

3

帖子

1

主题

0

精华

新人

F 币
27 元
贡献
11 点
5#
 楼主| 发表于 2018-2-7 08:55:37 | 只看该作者
vvt 发表于 2018-2-6 10:58
试试改成 ANSI 编码。

好的,谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 21:28

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表