2011-08-18 3 views
1

안녕 내 문제는 내가 순서가 지정되지 않은 데이터,이 데이터를 순서대로 파일에 쓰고 싶습니다. 예를 들어, 값의 순서는 70 번째이며,이 값은 파일의 70 번째 줄에 기록됩니다. 파일 포인터를 앞으로 어떻게 이동시킬 수 있습니까? 백 스페이스와 같은 명령이 있습니까?Fortran - 파일의 특정 줄에 데이터를 쓰는 방법?

답변

3

라인과 백 스페이스에 대해 이야기 할 때, 아마 당신은 access = "sequential"과 form = "formatted"를 의미 할 것입니다.

이 경우 레코드를 건너 뛰려면 빈 읽기만 수행하면됩니다.

read(unitnum, *) 
3

직접 액세스 파일을 사용하여 레코드를 쓰고 읽을 수 있습니다. http://en.wikipedia.org/wiki/Fortran_95_language_features#Direct-access_files

편집 일일 후, 예를 들어, 참조 : 순차 파일을 사용하여

솔루션이 제안되었다. 이게 효과가 있다고 생각하지 않습니다. 어떻게 작동하는지 알면 설명해주십시오. (물론 메모리의 값을 정렬하고 순차적으로 써낼 수 있습니다.) 다음은 문제를 설명하는 샘플 코드입니다.

program test_rewind 

    integer :: i, j 


    open (unit=15, file="test_rewind.txt", access="sequential", form="formatted", action="readwrite") 

    do i=1,10 
     write (15, '(I4)') i 
    end do 

    rewind (15) 

    do i=1,4 
     read (15, *) j 
    end do 

    write (15, '(I4)') 99 

    stop 

end program test_rewind 

출력 파일이 포함되어 있습니다 : 그것은 다음 5 값을 기록 할 것을 예로, 10 개 라인의 파일을 생성

1 
    2 
    3 
    4 
    99 

순차 파일의 문제가 있음을에 쓰기 기존 파일은 그 이후의 모든 것을 지 웁니다.

program test_rewind 

    integer :: i 

    open (unit=15, file="test_rewind.dat", access="direct", form="unformatted", action="readwrite", recl=4) 

    do i=1,10 
     write (15, rec=i) i 
    end do 

    write (15, rec=5) 99 

    stop 

end program test_rewind 

짧은 그것은 작동 - 5 그러나 99 5 변경으로 출력 파일 10 개 번호를 포함, 그들은 이진 :

는 직접 액세스 솔루션과 비교.

1

각 데이터 입력에 대해 janneb에서 설명한 방법을 사용하여 원하는 행을 얻습니다. 그런 다음 REWIND.을 사용하여 파일의 시작 부분으로 돌아가십시오 (access = 'sequential'만).

또한 필요한 경우 형식 설명자를 조회하여 한 줄로 왼쪽/오른쪽으로 이동하는 방법을 확인하십시오.

관련 문제