回 帖 发 新 帖 刷新版面

主题:读取二进制文件时出错

程序源码是ftp://hanna.ccmc.gsfc.nasa.gov/pub/modelweb/radiation_belt/
里面的radbelt的Fortran代码。
程序编译成功,运行后出错。很可能是读取文件时出错,代码为RADBELT文件第251行。
有可能读取该文件时,需要转换为BIG_ENDIAN。
以前jstzhurj指出了一些错误参看:http://bbs.pfan.cn/post-350643.html
程序看起来是运行了,但还是出现了些错误,我自己找了很久,感觉很可能还是文件读取时有问题。当读取AP8MAX.BIN文件时,对应的文本文件应该是AP8MAX.ASC
程序如果运行正常,输入参数分别为 0 回车,1回车,2回车,20 30回车,1回车,2.0回车,1回车,2.0回车。计算结果应该不为0。
希望高手解答,如果jstzhurj能够再次回答我的问题,那会更好。

回复列表 (共13个回复)

沙发


我都已经把下载的东西删了,把读取二进制文件涉及的所有整型数据全部换成短整型integer(2),有些整型数组是直接dimension声明的,需要先声明成短整型integer(2),这样去读数据应该没问题了,至于其他运算,可以一步步查错。

板凳


我同学后来也给我指点了下,那段代码,有一部分注释掉的语句是可以读取ASC文件的
这样的话,其它部分可以不做任何改动,程序可以成功运行。
你以前给我讲过读取二进制文件时OPEN语句的FORM要将unformatted改为binary,我想请教下你这两者有什么区别,还有就是我想知道读取二进制文件的代码是哪里出了错,这次运气好,源代码提供了ASC文件,以后如果遇到二进制文件还是要会处理。

3 楼


unformatted改为binary应该是没有什么区别的,可能是编译器依赖的,或者说fortran标准不同引起的,你到底要读哪个文件?你现在二进制能正确读取了吗?能打印几个IHEAD贴上来看看吗?再把map数组的头几个数据贴上来,我判断一下你读对了没有。

我现在没程序,凭记忆说的,不知道变量说对了没有。

4 楼


我二进制文件还是没有正确读取,但是这个程序本身即附带了.bin文件也附带了.asc文件,这两种文件记录的是同样的数据。程序里读取.asc的代码是被注释起来的。我后来就打开.asc文件程序也正常运行了。
我就是想请教下你,那段读取二进制文件的代码问题出在了哪里。
IHEAD       2     4  1970   100  2048  2048  1024 16296
MAP 1877    10
你的记忆力非常好,看来你那次帮我查程序,也花了些时间,论坛里多亏了向你这样无私奉献的人。

5 楼


看来我需要重新下载一下。

6 楼

[quote]
我二进制文件还是没有正确读取,但是这个程序本身即附带了.bin文件也附带了.asc文件,这两种文件记录的是同样的数据。程序里读取.asc的代码是被注释起来的。我后来就打开.asc文件程序也正常运行了。
我就是想请教下你,那段读取二进制文件的代码问题出在了哪里。
IHEAD       2     4  1970   100  2048  2048  1024 16296
MAP 1877    10
你的记忆力非常好,看来你那次帮我查程序,也花了些时间,论坛里多亏了向你这样无私奉献的人。[/quote]

以上数据针对哪一个二进制文件?

7 楼

针对AP8MAX.BIN ,我读的是AP8MAX.ASC文件

8 楼


你贴的是asc文件里面的东西吧
IHEAD       2     4  1970   100  2048  2048  1024 16296
MAP 1877    10

9 楼


你贴的是asc文件里面的东西吧
IHEAD       2     4  1970   100  2048  2048  1024 16296
MAP 1877    10

10 楼

我读的就是这个文件里面的东西,我只在屏幕上输出了一下,读出的东西和文件中的东西相同,我就直接把文件里的东西贴上去了
二进制文件我没有正确读取。

我来回复

您尚未登录,请登录后再回复。点此登录或注册