fortran - 您如何阅读 Fortran 中文件的最后两行以外的所有内容?
问题描述
我有大量要阅读的输入文件。它们包含不同数量的总行。我想阅读每个文件中最后两行的所有行。我该怎么做呢?是先计算每个文件中的行数然后读取所需行数的唯一方法吗?或者有什么比下面这样的更有效的东西吗?
DO I = 1,1000
OPEN(UNIT=I,FILE=FILENAME,STATUS='UNKNOWN',ACTION='READ')
DO
READ(I,*,IOSTAT=IO)
IF (IO/=0) EXIT
nlines(I) = nlines(I) + 1
END DO
REWIND(I)
DO J = 1,nlines(I)-2
READ(I,*) A(J)
END DO
END DO
解决方案
为什么不直接忽略最后两行(即在读取完成后将 nlines(i) 减 2)?IE:
DO I = 1,1000
OPEN(UNIT=I,FILE=FILENAME,STATUS='UNKNOWN',ACTION='READ')
DO J=1, size(A)
READ(I,*,IOSTAT=IO) A(J)
IF (IO/=0) EXIT
END DO
nlines(I) = J-3 ! 3 not 2 because J is already incremented
END DO
推荐阅读
- javascript - 为什么一段时间后 Cookie 没有变化?还是返回最后一个值?
- laravel - 如何返回到分页页面?
- xcode - 我可以在安装在外置硬盘中的 Xcode 中使用颤振吗?
- data-structures - 为什么我的代码给我“形式参数列表不匹配”?
- python - 使用 Python 为 SAS 数据集生成 JSON 文件
- reactjs - 使用 React 中的 props 将图像和锚标记添加到数组中的元素
- java - 查找数组中的 K 个最小元素
- javascript - Array.map / 过滤一个连续的数组,然后将其重新排序为连续的
- amazon-web-services - 适用于 Amazon Elasticsearch 的 EBS 存储
- google-sheets - Google表格:选择要在查询中选择的列