【问题标题】:Reading a file into an array with fortran: skipping multiple header lines使用 fortran 将文件读入数组:跳过多个标题行
【发布时间】:2015-04-17 14:40:07
【问题描述】:

我在将大型 ascii 文件(带有 6 行标题)读入数组时遇到问题。这是相关代码...

    ! skip ahead 6 lines in the ascii file
    do i=1, 6
        read (20, *)
    end do
    do row = 1, nrow
        read(20,*) data(row,:)
    end do

我收到消息“Fortran 运行时错误:列表输入中项目 3991 的整数错误”。我看过 col 3991 并没有什么不寻常的地方。有谁知道如何正确跳过标题?我正在用 gfortran 编译一个 .f90 文件。谢谢。

编辑:我也试过这个而不是第一个循环......

read (20, *) temp, ncol
read (20, *) temp, nrow
read (20, *) temp, xcord
read (20, *) temp, ycord
read (20, *) temp, cell
read (20, *) temp, nodata

我的标题是:

ncols         4193
nrows         2322
xllcorner     604374.4763
yllcorner     810341.0601
cellsize      30
NODATA_value  -9999

【问题讨论】:

  • 标题中有什么?
  • ncols 4193 nrows 2322 xllcorner 604374.4763 yllcorner 810341.0601 cellsize 30 NODATA_value -9999
  • 抱歉,我是这里的 n00b,不知道如何格式化最后一个响应。但是,如果您想知道,我也尝试不使用 do 循环,只需在代码中逐一读取 6 行,并为每次读取(通常是字符,int)使用适当数据类型的适当变量
  • 由于错误消息与项目 3991 有关,因此问题可能不在于标题,而在于文件的更下方。当我找不到这样的问题时,我使用的一种技术是将行读入字符串,将字符串回显到输出,然后从字符串中读取“实际”。最后的“echo”输出将显示导致问题的输入。
  • 感谢您的提示。以后我会努力记住这一点。

标签: arrays header fortran


【解决方案1】:

很抱歉浪费大家的时间。我刚刚意识到我的数据是浮点数据而不是整数数据。错误信息再清楚不过了。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2017-02-26
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2021-12-14
    • 2015-06-15
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多