繁体   English   中英

从fortran的数据文件中读取列

[英]Reading columns from data file in fortran

我编写了以下块以读取外部数据文件:

     open(unit=338,file='bounnodes.dat',form='formatted') 
      DO I=1,NQBOUN
         DO J=1,NUMBOUNNODES(I)
            read(338,2001) NODEBOUN(i,j)
            write(6,*) 'BOUNDARY NODES',  NODEBOUN(i,j)
         ENDDO
       ENDDO
     2001
     FORMAT(32I5)

据我了解,这应该从bounnodes.dat读取2 x 32数组。 但是,在读取过程中出现错误end-of-file并且它打印第一列。

我试图使用相同的代码读取32 x 2的数组,它读取第一列的32个元素,但为下一列输出0s

您能解释一下发生了什么吗? 我的格式有误吗?

Fortran中的每个已读语句都会前进到下一条记录。 这意味着普通文本文件中将换行。 尝试这个:

   DO I=1,NQBOUN
     DO J=1,NUMBOUNNODES(I)
        read(338,2001,advance='no') NODEBOUN(i,j)
        write(*,*) 'BOUNDARY NODES',  NODEBOUN(i,j)
     ENDDO
     read(338,*)
   ENDDO

其中NQBOUN是行数,NUMBOUNNODES(I)是一行中的列数。 (我总是遇到问题,什么是32x2与2x32)

您可以使用隐含的方法使其更短

   DO I=1,NQBOUN
        read(338,2001) ( NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
        write(*,*) ( 'BOUNDARY NODES', NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
   ENDDO

甚至

   DO I=1,NQBOUN
        read(338,2001) NODEBOUN(i,:)
        write(*,*) 'BOUNDARY NODES',  NODEBOUN(i,1:NUMBOUNNODES(I))
   ENDDO

所有这些都使用Fortran 90功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM