Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary FORTRAN非格式化输出_Binary_Fortran - Fatal编程技术网

Binary FORTRAN非格式化输出

Binary FORTRAN非格式化输出,binary,fortran,Binary,Fortran,我已经在这里发布了,但现在我已经更改了代码 program v10 implicit none real :: xmin,xmax,ymin,ymax,zmin,zmax,size integer :: nx,ny,nz,i,j,nodestotal,irec real,dimension(15025) :: v integer,dimension(15025) :: v1 open(unit=34, file='for.header', status='old') read(34,

我已经在这里发布了,但现在我已经更改了代码

program v10

implicit none

real :: xmin,xmax,ymin,ymax,zmin,zmax,size
integer :: nx,ny,nz,i,j,nodestotal,irec
real,dimension(15025)    :: v
integer,dimension(15025) :: v1

open(unit=34, file='for.header', status='old')
read(34,115) xmin,xmax,ymin,ymax,zmin,zmax,size,nx,ny,nz
115   format(7f10.3,3i10)

open(unit=35, file='vel.txt', status='unknown')
read(35,*)v
v1=nint(v)

inquire (iolength = irec) v1(1)
open (36, file="lia2", form="unformatted", access="direct", recl=2*irec)
do i=1,15025
    write(36, rec=i) v1(i)
end do

end
我已经用gfortran在Ubuntu 16.04上编译过了。 当我转储二进制输出时,我得到了

0000000        5000           0        5000           0
*
0011300        5000           0        5350           0
0011320        5350           0        5350           0
*
0022620        5700           0        5700           0
*
0034120        5700           0        5727           0
0034140        5727           0        5727           0
*
0045440        5755           0        5755           0
*
0056740        5755           0        5783           0
0056760        5783           0        5783           0
*
0070260        5811           0        5811           0
*
0101560        5811           0        5838           0
0101600        5838           0        5838           0
*
0113100        5866           0        5866           0
*
0124400        5866           0        5894           0
0124420        5894           0        5894           0
*
0135720        5922           0        5922           0
*
0147220        5922           0        5950           0
0147240        5950           0        5950           0
*
0160540        5977           0        5977           0
*
0172040        5977           0        6005           0
0172060        6005           0        6005           0
*
0203360        6033           0        6033           0
*
0214660        6033           0        6061           0
0214700        6061           0        6061           0
*
0226200        6088           0        6088           0
*
0237500        6088           0        6116           0
0237520        6116           0        6116           0
*
0251020        6144           0        6144           0
*
0262320        6144           0        6172           0
0262340        6172           0        6172           0
*
0273640        6200           0        6200           0
*
0352600        6200           0
0352610
将粘贴vel.txt

为什么要插入这些零?

这是因为

recl=2*irec

我看不出任何理由来解释
2*
,它应该是
irec

说明:

inquire (iolength = irec) v1(1)
询问一个元素为
v1
的记录有多大,
recl=2*irec
将文件记录设置为该元素的两倍。您的记录可以保存两个数字,而您总是只写一个数字

write(36, rec=i) v1(i)
最好(可能更快)将记录长度设置为整个数组的长度,并立即写入整个内容