c언어 파일입출력질문입니다.

sks93의 이미지

파일입출력을할때

3번째줄만 읽거나 10번째줄만 읽거나 하는 방법은 없는건가요??

 의 이미지

개행문자의 위치를 미리 알거나, 한 번 스캔해서 알아내거나.
개행 문자는 사람 눈에만 띄는 거지 컴퓨터가 보기엔 하고 많은 문자 중 하나일 뿐이거든요.
그러니 3번째 줄을 읽으려면, 파일의 처음부터 읽으면서 두 번째 개행문자를 찾고 그 뒤부터 읽어야겠죠.

개행문자들의 위치를 찾는 것이 관건인데,

1. 텍스트의 모든 라인의 길이가 일정할 경우(예:80글자) 개행문자의 위치가 모두 뚜렷하므로 fseek을 불러서 거기서부터 읽기 시작하면 됩니다.

2. 개행문자의 위치가 불규칙적이고 라인 단위 임의 접근이 빈번할 경우, 그냥 작정하고 전부 스캔해서 모든 개행문자의 위치(=모든 라인의 시작 위치)를 수집해서 인덱싱해놓는 방법도 있습니다.

어쨌거나, 개행문자의 위치를 미리 알 수 없으면 최소 한 번은 스캔해야 한다는 의미죠.