gnl 준비: 기본 개념

pig005·2021년 6월 11일
1

get_next_line@gnl

목록 보기
1/1

gnl이란

허용 함수: read, malloc, free

EOF까지 파일을 한 번에 한 줄씩 읽어와 *line에 저장하는 함수 - 보너스: 단일 정적 변수, 여러 파일을 동시에 읽을 수 있어야 함

int get_next_line(int fd, char **line);

인자값

fd 정수형, 읽을 파일 번호
*line 문자열 포인터, 읽어온 줄의 내용을 저장

출력값

1 줄 하나를 읽음
0 줄의 끝 (EOF)
-1 오류

**line이 이중 포인터인 이유는?

반환값이 둘이라(오류 상태, 읽어온 줄), *line은 문자열을 담는 char pointer 이므로 거기에 정보를 덮어씌우려면 *line의 주소를 입력받아야 함. 함수를 호출할때는

char *line;
get_next_line(4, &line);
printf("lines read: %s", line);

(사용 상상도)


팔만코딩경 링크

read()

#include <unistd.h>
ssize_t 
read(int fildes, void *buf, size_t nbyte);

인자값

fildres 정수형, 읽을 파일 번호 (=fd)
nbyte 읽어올 바이트 수
buf 배열, 읽어온 문자열을 저장

출력값

읽어온 바이트 수
0 줄의 끝 (EOF)
-1 오류
*ssize_t: 부호 있는 size_t (mac에서 8바이트)
-> get_next_line 출력값으로?

read(fd, buffer, BUFFER_SIZE) 에서 fd == 0 인 경우와 fd 가 파일인 경우 BUFFER_SIZE 내에 있는 '\n' 를 처리하는 방법이 다르다

이거는 어떤 말인지 아직은 잘 모르겠다... 내일 다시 찾아봐야지 (TODO)

정적 변수

TODO

파일 디스크립터

TODO

gcc -d

TODO

profile
안녀ㅕㅕㅕㅕㅕㅇ

관심 있을 만한 포스트

0개의 댓글