파일입출력을할때
3번째줄만 읽거나 10번째줄만 읽거나 하는 방법은 없는건가요??
개행문자의 위치를 미리 알거나, 한 번 스캔해서 알아내거나. 개행 문자는 사람 눈에만 띄는 거지 컴퓨터가 보기엔 하고 많은 문자 중 하나일 뿐이거든요. 그러니 3번째 줄을 읽으려면, 파일의 처음부터 읽으면서 두 번째 개행문자를 찾고 그 뒤부터 읽어야겠죠.
개행문자들의 위치를 찾는 것이 관건인데,
1. 텍스트의 모든 라인의 길이가 일정할 경우(예:80글자) 개행문자의 위치가 모두 뚜렷하므로 fseek을 불러서 거기서부터 읽기 시작하면 됩니다.
fseek
2. 개행문자의 위치가 불규칙적이고 라인 단위 임의 접근이 빈번할 경우, 그냥 작정하고 전부 스캔해서 모든 개행문자의 위치(=모든 라인의 시작 위치)를 수집해서 인덱싱해놓는 방법도 있습니다.
어쨌거나, 개행문자의 위치를 미리 알 수 없으면 최소 한 번은 스캔해야 한다는 의미죠.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
개행문자의 위치를 미리 알거나, 한 번 스캔해서 알아내거나.
개행문자의 위치를 미리 알거나, 한 번 스캔해서 알아내거나.
개행 문자는 사람 눈에만 띄는 거지 컴퓨터가 보기엔 하고 많은 문자 중 하나일 뿐이거든요.
그러니 3번째 줄을 읽으려면, 파일의 처음부터 읽으면서 두 번째 개행문자를 찾고 그 뒤부터 읽어야겠죠.
개행문자들의 위치를 찾는 것이 관건인데,
1. 텍스트의 모든 라인의 길이가 일정할 경우(예:80글자) 개행문자의 위치가 모두 뚜렷하므로
fseek
을 불러서 거기서부터 읽기 시작하면 됩니다.2. 개행문자의 위치가 불규칙적이고 라인 단위 임의 접근이 빈번할 경우, 그냥 작정하고 전부 스캔해서 모든 개행문자의 위치(=모든 라인의 시작 위치)를 수집해서 인덱싱해놓는 방법도 있습니다.
어쨌거나, 개행문자의 위치를 미리 알 수 없으면 최소 한 번은 스캔해야 한다는 의미죠.
댓글 달기