get_next_line의 개요

Worldi·2021년 12월 6일
0

42seoul

목록 보기
11/15

개요

  • 변수
    line : 반환 하게 될 라인.
    backup : 라인 탐색의 시작을 의미하는 곳. line 의 버퍼라고 생각하면 됨.
    buf : buf사이즈 만큼 읽어서 반환.
  • 알고리즘
  1. backup 이 이미 존재한다면, backup을 split_line 함수로 나눠서 개행기준으로 앞쪽은 라인으로, 뒤쪽은 backup 에다가 저장한다.
  2. backup 이 존재하지 않는다면,
    read를 통해 읽는다. 만약 읽었는데 파일 읽기에 실패하거나, buffer_size 가 음수가 들어온다면, 오류이므로 함수를 끝낸다.
  3. read 함수를 통해 읽는 바이트가 존재할 때까지, 개행이 나타낼 때 까지 읽는다. 만약 개행이 나타나지 않는다면, 계속 backup 버퍼에 담는다. 그리고 개행이 나타나는 순간에 split_line 함수로 나눠서 앞쪽은 라인으로, 뒤쪽은 backup 에다가 저장한다.
  4. 만약, 바이트가 존재하지 않는다면, 파일 읽기가 끝났다는 이야기 이므로 backup 에 개행이 없어도 이를 반환시켜줘야 한다. 이를 추가한다.
profile
https://worldi.tistory.com/ 로 블로그 이전합니다.

0개의 댓글