我遇到了一个问题,需要从二进制输入文件中读取指定字节的数据,比如在文件开头的 40000 字节处读取数据。我打算使用对文件的直接访问。但这需要将每个段划分为与参数中指定的大小相同recl
。任何人都可以提供可行的解决方案。某些编程语言(如 c)提供可以跳转到指定字节的函数。
问问题
203 次
1 回答
3
Fortran 2003 标准引入了未格式化的流访问,几乎可以做到这一点。一旦文件被适当地打开,您就可以在相关的 write 语句中使用 POS 说明符。在积极支持的 Fortran 编译器中,对这个 Fortran 2003 特性的支持相当普遍。编译器需要使用一个字节的文件存储单元,但我知道的所有编译器都这样做(这也是标准推荐的)。
否则,最接近的标准 Fortran 90 方法是使用未格式化的直接访问,其记录长度是要读取的数据元素的所需位置和大小的一些合理公因子。例如 - 如果您正在从文件中读取 8 个字节的实数,那么 8 的记录长度可能会起作用 - 您将从记录号 5000 开始读取。这要求 Fortran 处理器的文件存储单元是一个字节(常见,可能带有编译选项)并且文件中不存在用于未格式化的直接访问的记录分隔符或类似内容(大多数情况下,可能再次带有编译选项)。
于 2013-07-15T05:06:20.873 回答