职业小白 发表于 2018-2-5 16:01:00

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

小白求各位指点下!
文本文件读取类型是未定义的,手动输入了一列数字,但是使用数组读取的时候,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   1005BB23Unknown               UnknownUnknown
降雨应力期矩阵化.00BA1DC0_MAIN__                  37鐭╅樀鍖?f90
降雨应力期矩阵化.00BA4962Unknown               UnknownUnknown
降雨应力期矩阵化.00BA2D79Unknown               UnknownUnknown
降雨应力期矩阵化.00BA2EBDUnknown               UnknownUnknown
KERNEL32.DLL       73ED8654Unknown               UnknownUnknown
ntdll.dll          76F94A77Unknown               UnknownUnknown
ntdll.dll          76F94A47Unknown               UnknownUnknown

代码如下:
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






vvt 发表于 2018-2-5 18:26:56

你不能查询文件的 access 和 form
你只能查询一个已打开的文件通道号的 access 和 form

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

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

职业小白 发表于 2018-2-5 20:46:53

vvt 发表于 2018-2-5 18:26
你不能查询文件的 access 和 form
你只能查询一个已打开的文件通道号的 access 和 form



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

vvt 发表于 2018-2-6 10:58:15

试试改成 ANSI 编码。

职业小白 发表于 2018-2-7 08:55:37

vvt 发表于 2018-2-6 10:58
试试改成 ANSI 编码。

好的,谢谢
页: [1]
查看完整版本: fortran无法读取txt文件,求前辈指导