파일에서 원하는 번째의 라인을 읽어오기
글쓴이: nightandream / 작성시간: 목, 2004/04/29 - 8:32오후
안녕하세요.
C 프로그래밍시에
파일에서 원하는 특정 라인의 데이터를 읽어오려고 하는데요
일단 가능한 방법으로는
예를들어, 10번재 라인을 읽어온다 했을때..
fgetc 함수로 '\n'의 갯수가 9개 나올때까지 세서 파일포인터 이동시키는 방법이 있겠고,
fgets 함수를 9번 호출한후 10번때 호출때 읽어오는 방법도 있겠는데요...
이렇게 파일포인터를 이동시키는 방법 말고
한번에 그 라인으로 이동해서 데이터를 읽어오는 방법은 없을까요?
아니면 이러한 기능의 표준 함수가 있다던가...
자주 이 기능을 사용하게 되서 질문드립니다.
Forums:
파일에서 한 라인에 들어가는 문자수가 정해져있다면 fseek로 넘어갈 수
파일에서 한 라인에 들어가는 문자수가 정해져있다면 fseek로 넘어갈 수 있겠지요. 없다면 \n을 세는 수 밖에 없습니다.
사람이 보는 관점에서는 한 줄이라는 개념이 존재하지만,
컴퓨터의 관점에서는 '줄'이라는 개념이 없다는걸 생각하시면 쉬울 듯 싶습니다. (단지 \n이 구분자라는걸 알고 있을 뿐이지요)
흔히 이런 프로그래밍할 때 파일 액세스 비용을 생각하기 때문에 어떤 방법
흔히 이런 프로그래밍할 때 파일 액세스 비용을 생각하기 때문에 어떤 방법을 찾습니다만,
fgets 등의 함수를 사용하면, 커다란 블럭단위로 읽고, 메모리상에서 라인을 끊어 주기 때문에 시스템 콜이 생각보다(!) 많지 않습니다. 그냥 fgets 함수 쓰셔요. 그 함수 써도 어차피 안에서 scan 해가면서 \n 을 카운트할 것이고 누가하든 그렇게 해야만하므로 안심하고 사용하세요.
strace로 system call을 확인해보세요 fgets 부른 횟수만큼 read가 불리지 않아 안심입니다.
---
http://coolengineer.com
댓글 달기