我已在此处发布,但现在我已更改了我的代码
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
我在Ubuntu 16.04上使用gfortran编译。 当我转储二进制输出时,我得到了
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被粘贴 http://pastebin.com/D1dM8e91
为什么要插入这些零?
答案 0 :(得分:2)
这是因为
recl=2*irec
我无法看到2*
的任何理由,它应该只是irec
。
说明:
inquire (iolength = irec) v1(1)
询问具有v1
的一个元素的记录有多大,recl=2*irec
将文件记录设置为两倍。您的记录可以包含两个数字,并且您只能写一个数字
write(36, rec=i) v1(i)