Помогите разобраться с I/O в Fortran. Нужно сделать бинарный файл и дописать в начало число 'строк', чтобы другая программа смогла понять его.
Сначала пишу файл, используя stream, и считаю число 'строк'.
Потом дописываю в этот же файл число 'строк' в начало. Получается неправильно. Проблема явно в том, что я неправильно дописываю.
Подскажите как сделать правильно?
program test
implicit none
real(8) :: coord(4)
integer :: i,j,k
open(unit=12,file="sample.bin",access='stream',&
form='unformatted',status='unknown')
k=0
do i=1,100,1
do j=1,10,1
call random_number(coord)
coord=(coord-0.5_8)*10._8
if(coord(1)>0) then
write(12) i,j,coord
k=k+1
else
exit
end if
end do
end do
! output 1
read(12,pos=1)
read(12) i,j,coord
write(*,*) k
write(*,*) i,j,coord
! add # of lines
write(12,pos=1) k
! output 2
read(12,pos=1)
read(12) k
read(12) i,j,coord
write(*,*) k
write(*,*) i,j,coord
close(12)
end program test
-- Пн янв 21, 2013 13:57:21 --Как я понял, когда добавляю в начало число, то я перезаписываю то, что там было. Можно ли добавить без перезаписи?
-- Пн янв 21, 2013 14:02:05 --Спасибо, уже разобрался. Нужно было просто записать в начало что не жалко потом переписать.
Код:
k=0
do i=1,100,1
do j=1,10,1
call random_number(coord)
coord=(coord-0.5_8)*10._8
if(coord(1)>0) then
if(k==0) write(12) 0,i,j,coord
if(k>0) write(12) i,j,coord
k=k+1
else
exit
end if
end do
end do