Fortran Coder

查看: 227|回复: 2

[文件读写] 读入二进制文件结果不对,求助。

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
48 元
贡献
24 点
发表于 2019-1-24 17:27:24 | 显示全部楼层 |阅读模式
本帖最后由 gerzer 于 2019-1-24 19:37 编辑

要用Fortran读一个二进制的dat数据,我没有写数据的源码,不知道如何写的,唯一知道的就是用MATLAB读这个数据的语句,如下:
fid = fopen('qwe.dat','r');
status = fseek(fid,0,'bof');
t = fread(fid,409,'float64');
查过MATLAB官网,float64是64位8字节的数据类型,所以用Fortran读这个二进制文件的句子我是这么写的:
real::tes
open(11,file='qwe.dat',status='old',action='read',form='unformatted',access='direct',recl=2)
read(11,rec=1)tes
我想先读第一个数看一下,发现不对,正确的话应该是26.3,读入的结果是10的-11次方量级。读了前十个数,都要么很大要么很小,量级差别太大。
http://fcode.cn/guide-4-1.html 这个网页里提到不同编译器对recl的定义不同,所以我又试了recl=8,读前十个数,依然不对。recl我从1到10试了一遍都读不对,不知道问题出在哪里……
系统xp,编译器cvf6.6.
如果一开始把变量的类型设置成real(kind=8)会不会有区别?

回复

使用道具 举报

691

帖子

0

主题

0

精华

大师

F 币
665 元
贡献
372 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-1-25 09:05:43 | 显示全部楼层
你可以试试看看视频教程 v.fcode.cn 基础篇,文件读写下集。
tes 肯定要双精度的。
你可以把二进制文件传到网盘里,让别人下载试一下。(否则只能靠猜,不靠谱)

5

帖子

2

主题

0

精华

入门

F 币
48 元
贡献
24 点
 楼主| 发表于 2019-1-25 10:37:51 | 显示全部楼层
vvt 发表于 2019-1-25 09:05
你可以试试看看视频教程 v.fcode.cn 基础篇,文件读写下集。
tes 肯定要双精度的。
你可以把二进制文件传到 ...

谢谢!今天试了试加上kind=8就对了~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-7-16 08:17

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表