이 프로젝트의 목적은 파일 디스크립터로부터 읽혀진, 개행으로 끝나는 한 줄을 반환하는 함수를 코드화 하는 것이다.
이 프로젝트를 통해 C 프로그래밍에 있어서 아주 흥미롭고 새로운 개념인 '정적 변수'를 배울 수 있다.
함수 이름 | get_next_line |
---|---|
프로토타입 | char *get_next_line(int fd); |
제출할 파일 | get_next_line.c, get_next_line_utils.c, get_next_line.h |
매개변수 | 읽어들일 파일의 디스크립터 (서술자) |
반환값 | 읽혀진 라인 : 한 줄이 제대로 읽힘 NULL : 읽을 라인이 더이상 없거나 에러 발생 |
사용가능한 외부 함수 |
read, malloc, free |
설명 | 파일 디스크립터로부터 한 줄을 읽고, 반환하는 함수를 작성하시오. |
get_next_line()
을 (반복문 등을 통해) 여러 번 호출할 때마다, 함수는 한 번에 한 줄씩 파일 디스크립터가 가리키는 텍스트 파일을 읽을 수 있어야 합니다.
여러분의 함수는 방금 읽어들인 문자열 한 줄을 반환하여야 합니다. 더이상 읽어올 것이 없거나 에러가 발생하면 NULL을 반환하여야 합니다.
파일에서 읽을 때, 표준입력으로부터 읽어들일 때 모두 함수가 예상대로 동작하는지 확인하십시오.
중요: 파일에 끝까지 도달하였고 \n
이 존재하지 않을때를 제외하고, 반환하는 문자열에는 \n
이 포함되어야 합니다.
헤더 파일인, get_next_line.h
에는 적어도 get_next_line()
의 프로토타입이 존재하여야 합니다.
get_next_line_utils.c
파일에 필요한 모든 헬퍼 함수들을 추가하세요.
다음은 보너스 파트의 요구사항입니다:
정적 변수를 하나만 사용하여 get_next_line()
을 개발하세요.
당신의 get_next_line()
이 여러 개의 파일 descriptor를 한번에 관리할수 있어야 합니다. 예를 들어, 파일 디스크립터 3, 4, 5에 접근 가능한 경우, descriptor나 다른 줄에서의 fd의 reading thread를 잃지 않은 채로 각 호출당 다른 fd를 읽을수 있어야 합니다.
이는 get_next_line()
을 호출하여 fd 3, fd 4, 다음에 5 그 다음에 다시 3, 4, 등등을 읽을 수 있어야 합니다.