【问题标题】:Problem reading from file with arrays从带有数组的文件中读取问题
【发布时间】:2011-04-18 04:41:02
【问题描述】:

在 Fortran 95 上,我收到一条错误消息,指出 itemarray(size) 不能是 intent(out),这没有任何意义,因为您正在从文件中读取 itemarray。我该如何解决这个错误?

在这个子例程中,我基本上是尝试从文件中读取数据并将值存储在数组中。

下面是我所指的子程序的代码。任何帮助表示赞赏。感谢您的宝贵时间。

SUBROUTINE readItems(size,itemarray,priarray,quarray)

INTEGER:: iost=0, i=0
INTEGER, INTENT(OUT):: quarray(50)
INTEGER, INTENT(OUT):: size
REAL, INTENT(OUT):: priarray(50)
CHARACTER(20),INTENT(OUT)::itemarray(50)
CHARACTER(20)::namefiletoread

PRINT*,"Enter the name of file you would like to read: "
READ*,namefiletoread

OPEN(UNIT=77,FILE = namefiletoread, ACTION = "READ", STATUS="REWIND",IOSTAT=iost)
IF(iost>0)STOP "Problem opening the file!"

DO i=1, size
READ(77,'(A,F6.2,I8)',IOSTAT=iost), itemarray(i), priarray(i),quarray(i)
IF(iost<0)STOP
END DO


END SUBROUTINE

【问题讨论】:

  • 您使用的是什么编译器(带有哪些选项),您得到的确切错误信息是什么?使用gfortran -c -std=f95 编译只会给我一个警告:“(1) 处的 OPEN 语句中的 STATUS 说明符具有无效值 'REWIND'”,这是正确的,因为您应该使用说明符 POSITION='REWIND'。
  • 我正在使用 g95。我用 status="rewind"
  • 我认为你可能是对的。而不是 status="rewind" 它应该是 position="rewind."

标签: arrays fortran fortran95


【解决方案1】:

问题可能出在变量“size”上。它被声明为intent(out),所以很明显它不是来自调用函数,而且在你开始迭代它之前似乎没有被分配到任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多