42Seoul/Get Next Line

[C] get_next_line 구현하기 (1) - get next line 이란?

  • -
728x90

Get Next Line

  • 주어진 file discripter에 해당하는 file로부터 라인단위(개행 문자로 구분)로 글을 읽어온다.
  • 함수를 한 번 호출할 때 마다, 한 줄씩 글을 읽는다.
  • 읽기 성공하면 1, EOF(End of File)에 다다르면 0, error 발생 시 -1 반환

file discripter

wonillism.tistory.com/166

 

[C] file discriptor (파일 디스크립터)

파일 디스크립터란? 특정한 파일에 접근하기 위한 추상적인 키이다. 일반적으로 POSIX 운영체제에 쓰인다. POSIX에서 파일 디스크립터는 정수이다. 표준 POSIX 파일 서술자 0 : 표준 입력(stdin) 1 : 표��

wonillism.tistory.com

read()

size_t read(int fd, void *buf, size_t bytes);

byte만큼 fd를 읽어 buf에 저장한다. 읽어온 byte값을 반환하고, 실패시 -1을 반환한다. 파일을 끝까지 읽었으면(EOF)0을 반환.

 

gcc -d 플래그

외부에서 #define을 정의한다.

 

static 변수

데이터 영역에 저장되어 프로그램 종료 시 까지 남아있기 때문에, 다음 line을 읽을 시작 주소를 계속 저장할 수 있도록 backup 버퍼를 static변수로 선언해야한다.  

Logic

  1. 파일을 읽을 임시 버퍼를 만든다.
  2. 읽어온 버퍼를 백업하기위해 static 변수를 만든다.
  3. read()함수를 이용하여 라인을 읽은 후, 백업해둔 버퍼에 개행문자의 유무를 검사한다.
  4. 개행문자가 없으면, 개행문자를 찾을 때 까지 파일을 계속 읽으면서 백업한 것과 계속 붙여준다.
  5. 개행문자가 있으면, 개행문자 전까지 문자열을 4번과 같은 작업을 해주고, 개행문자 뒤는 백업 버퍼에 백업한다.
728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.