728x90
Get Next Line
- 주어진 file discripter에 해당하는 file로부터 라인단위(개행 문자로 구분)로 글을 읽어온다.
- 함수를 한 번 호출할 때 마다, 한 줄씩 글을 읽는다.
- 읽기 성공하면 1, EOF(End of File)에 다다르면 0, error 발생 시 -1 반환
file discripter
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
- 파일을 읽을 임시 버퍼를 만든다.
- 읽어온 버퍼를 백업하기위해 static 변수를 만든다.
- read()함수를 이용하여 라인을 읽은 후, 백업해둔 버퍼에 개행문자의 유무를 검사한다.
- 개행문자가 없으면, 개행문자를 찾을 때 까지 파일을 계속 읽으면서 백업한 것과 계속 붙여준다.
- 개행문자가 있으면, 개행문자 전까지 문자열을 4번과 같은 작업을 해주고, 개행문자 뒤는 백업 버퍼에 백업한다.
728x90
300x250