使用 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 将文件读入数组:跳过多个标题行的主要内容,如果未能解决你的问题,请参考以下文章