개요
Libft는 C 표준 라이브러리의 핵심 함수들을 직접 구현한 정적 라이브러리다. 메모리 조작, 문자열 처리, 문자 분류, 변환, 파일 입출력 등의 기능을 제공한다.
빌드 방법
make # 라이브러리 빌드
make clean # 오브젝트 파일 삭제
make fclean # 오브젝트 파일과 라이브러리 파일 삭제
make re # 완전히 재빌드
빌드 후 libft.a 파일이 생성된다.
사용 방법
프로젝트에서 libft를 사용하려면:
- 헤더 파일 포함:
#include "libft.h"
- 컴파일 시 라이브러리 링크:
gcc your_program.c -L. -lft -o your_program
함수 목록
Part 1: 기본 함수
메모리 함수
ft_memset: 메모리 영역을 특정 값으로 설정하는 함수ft_bzero: 메모리 영역을 0으로 초기화하는 함수ft_memcpy: 메모리 영역을 복사하는 함수ft_memccpy: 특정 문자까지 메모리를 복사하는 함수ft_memmove: 메모리 영역을 이동하는 함수 (오버랩 처리)ft_memchr: 메모리에서 문자를 검색하는 함수ft_memcmp: 메모리 영역을 비교하는 함수ft_calloc: 메모리를 할당하고 0으로 초기화하는 함수
문자열 함수
ft_strlen: 문자열의 길이를 계산하는 함수ft_strlcpy: 문자열을 안전하게 복사하는 함수ft_strlcat: 문자열을 안전하게 연결하는 함수ft_strchr: 문자열에서 문자를 검색하는 함수 (앞에서)ft_strrchr: 문자열에서 문자를 검색하는 함수 (뒤에서)ft_strnstr: 문자열에서 부분 문자열을 검색하는 함수ft_strncmp: 문자열을 비교하는 함수 (n바이트)ft_strcmp: 문자열을 비교하는 함수ft_strdup: 문자열을 복제하는 함수
문자 분류 함수
ft_isalpha: 알파벳 문자인지 확인하는 함수ft_isdigit: 숫자 문자인지 확인하는 함수ft_isalnum: 알파벳 또는 숫자인지 확인하는 함수ft_isascii: ASCII 문자인지 확인하는 함수ft_isprint: 출력 가능한 문자인지 확인하는 함수ft_toupper: 소문자를 대문자로 변환하는 함수ft_tolower: 대문자를 소문자로 변환하는 함수
변환 함수
ft_atoi: 문자열을 정수로 변환하는 함수
Part 2: 추가 함수
문자열 조작 함수
ft_substr: 문자열의 부분 문자열을 추출하는 함수ft_strjoin: 두 문자열을 연결하는 함수ft_strtrim: 문자열의 앞뒤 공백을 제거하는 함수ft_split: 구분자로 문자열을 분할하는 함수ft_strmapi: 문자열에 함수를 적용하여 새 문자열을 생성하는 함수
변환 함수
ft_itoa: 정수를 문자열로 변환하는 함수
파일 입출력 함수
ft_putchar_fd: 파일 디스크립터에 문자를 출력하는 함수ft_putstr_fd: 파일 디스크립터에 문자열을 출력하는 함수ft_putendl_fd: 파일 디스크립터에 문자열을 출력하고 개행하는 함수ft_putnbr_fd: 파일 디스크립터에 숫자를 출력하는 함수
Bonus: get_next_line
get_next_line: 파일 디스크립터에서 한 줄씩 읽어오는 함수
파일을 한 줄씩 읽어오는 함수로, 여러 파일 디스크립터를 동시에 처리할 수 있다. 내부적으로 캐시를 사용하여 효율적으로 동작한다.
사용 예시:
int fd = open("file.txt", O_RDONLY);
char *line;
while (get_next_line(fd, &line) > 0)
{
printf("%s\n", line);
free(line);
}
close(fd);
주요 특징
- 안전성: 버퍼 오버플로우를 방지하는 안전한 문자열 함수를 제공한다
- 효율성: 최적화된 메모리 관리 및 알고리즘을 사용한다
- 호환성: 표준 라이브러리 함수와 동일한 동작을 보장한다
- 확장성: 추가 유틸리티 함수를 제공한다
파일 구조
libft/
├── libft.h # 헤더 파일
├── Makefile # 빌드 스크립트
├── ft_*.c # 각 함수 구현 파일
└── get_next_line.c # get_next_line 구현
주의사항
- 동적으로 할당된 메모리는 사용 후
free()로 해제해야 한다 ft_split,ft_strjoin,ft_substr등의 함수는 메모리를 할당하므로 반드시 해제해야 한다get_next_line에서 반환된line포인터도 사용 후 해제해야 한다