2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Fortran I/O
Сообщение21.01.2013, 13:47 


08/03/11
186
Помогите разобраться с I/O в Fortran. Нужно сделать бинарный файл и дописать в начало число 'строк', чтобы другая программа смогла понять его.

Сначала пишу файл, используя stream, и считаю число 'строк'.
Потом дописываю в этот же файл число 'строк' в начало. Получается неправильно. Проблема явно в том, что я неправильно дописываю.
Подскажите как сделать правильно?

код: [ скачать ] [ спрятать ]
Используется синтаксис Fortran
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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: HungryLion


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group