c - 如何在 C 中读取 fortran 二进制文件?

标签 c fortran binaryfiles

我有一个由 fortran 代码生成的二进制文件。该文件包含一个 double 数组。我需要在我的 C 程序中打开它,然后像处理通常的数组一样使用它。

我该怎么做?

二进制文件中如何表示double类型?

最佳答案

几乎所有 Fortran 编译器,对于无格式(即二进制)顺序文件,都会在每条记录的开头和结尾写入记录的长度。通常长度以四个字节写入,但有些编译器使用八个字节。记录是使用单个 Fortran write 语句编写的所有内容。如果这个数组是用单个 Fortran write 语句用这种类型的文件编写的,那么你有四个或八个字节要跳过,然后是数组,然后是四或八个额外的字节。您可以通过使用十六进制编辑器查看文件来解决这个问题。如果数组是用多个 write 语句分段(例如,按列或按行)写入的,则每条记录都将具有此结构。

如果文件由 Fortran 编写为未格式化,则 Fortran double 类型以该计算机的二进制表示形式编写。您应该能够在相同类型的计算机上用 C 语言阅读它。如果您正在更改架构而不仅仅是语言,则二进制表示可能会有所不同。

Fortran 有其他不包括记录长度信息的文件访问方法。例如直接访问。流访问的新方法旨在实现语言间兼容性。

如果数组是多维的,您可能需要转置它,因为 Fortran 具有列优先数组,而 C 使用行优先。

相关问题:Fortran unformatted file formatreading fortran unformatted file with python

关于c - 如何在 C 中读取 fortran 二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190092/

相关文章:

python - 将 python 与 fortran 结合起来,教程有问题

pointers - 在子例程中分配数组并将其传回时,FORTRAN 中的内存泄漏问题

使用系统调用在 C 中复制文件并将其转换为二进制文件

c - 如果我们首先在 if 或 while 中使用 fork() 为什么会返回双零

c - 连接 5 游戏的位板?

C:在错误的时间释放一个 malloc 数组?

c - int数组到c中的字符串

floating-point - Fortran 实数表达式中的后缀 'd+0'

python - 使用内存 View 读取二进制文件

c - 读取二进制和 txt 文件 - 一次 1 个字节