使用 fortran 将文件读入数组:跳过多个标题行

Posted

技术标签:

【中文标题】使用 fortran 将文件读入数组:跳过多个标题行【英文标题】:Reading a file into an array with fortran: skipping multiple header lines 【发布时间】: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”输出将显示导致问题的输入。 感谢您的提示。以后我会努力记住这一点。 【参考方案1】:

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

【讨论】:

以上是关于使用 fortran 将文件读入数组:跳过多个标题行的主要内容,如果未能解决你的问题,请参考以下文章

fortran如何读入文本文件中的某行的指定部分

在 C++ 中将文件读入字符数组

在 Fortran90 中从文本文件中跳过一行

将fortran双精度格式读入python

fortran读取一行数据

如何在 Fortran 90 中跳过带有“#”符号的行? [复制]