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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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