파일 위치 지정

파일 위치 지정 (File Positioning)

파일을 읽다 보면 지금 읽고 있는 위치가 어디인지, 혹은 특정 위치로 이동하고 싶을 때가 있어요. Octave는 주어진 파일의 파일 포인터 위치를 설정·조사하는 데 쓸 수 있는 함수 세 개를 제공해요.

출처: File Positioning

본문

ftell

pos = ftell (fid)

파일 디스크립터 fid가 가리키는 파일의 시작 지점부터 세어 파일 포인터의 위치를 문자 수로 돌려줍니다.

See also: fseek, frewind, feof, fopen.

fseek

status = fseek (fid, offset)
status = fseek (fid, offset, origin)

파일 fid 안의 위치 offset으로 파일 포인터를 설정합니다. 포인터는 origin에서 offset만큼 떨어진 위치에 놓이는데, origin은 미리 정의된 변수 SEEK_SET(시작), SEEK_CUR(현재 위치), SEEK_END(파일 끝) 중 하나이거나 문자열 "bof", "cof", "eof" 중 하나예요. origin을 생략하면 SEEK_SET으로 간주합니다. offset은 양수·음수·0일 수 있지만, originoffset의 모든 조합이 실현 가능한 건 아니에요.

fseek는 성공하면 0을, 오류가 나면 -1을 돌려줍니다.

See also: fskipl, frewind, ftell, fopen, SEEK_SET, SEEK_CUR, SEEK_END.

SEEK_SET / SEEK_CUR / SEEK_END

fseek_origin = SEEK_SET ()
fseek_origin = SEEK_CUR ()
fseek_origin = SEEK_END ()

각각 파일 시작, 현재 위치, 파일 끝을 기준으로 파일 포인터를 배치하도록 fseek에 넘길 수치 값을 돌려줍니다.

  • SEEK_SET — 파일 시작을 기준으로 삼습니다. See also: SEEK_CUR, SEEK_END, fseek.
  • SEEK_CUR — 현재 위치를 기준으로 삼습니다. See also: SEEK_SET, SEEK_END, fseek.
  • SEEK_END — 파일 끝을 기준으로 삼습니다. See also: SEEK_SET, SEEK_CUR, fseek.

frewind

frewind (fid)
status = frewind (fid)

파일 디스크립터 fid가 가리키는 파일의 시작 위치로 파일 포인터를 이동합니다. 출력 상태를 요청하면 frewind는 성공 시 0을, 오류가 발생하면 -1을 돌려줍니다.

Programming Note: frewindfseek (fid, 0, SEEK_SET)과 동등해요.

See also: fseek, ftell, fopen.

다음 예시는 현재 파일 위치를 변수 marker에 저장하고, 파일 시작으로 이동해 네 글자를 읽은 뒤, 원래 위치로 돌아가는 것을 보여줘요.

marker = ftell (myfile);
frewind (myfile);
fourch = fgets (myfile, 4);
fseek (myfile, marker, SEEK_SET);

더 알아보기

  • octave-opening-and-closing-files — 파일 열고 닫기
  • octave-simple-file-io — 간단한 파일 입출력