int ft_atoi(char const \*str)ft_isspace : 문자 c를 인자로 받아 c가 공백인지 확인하는 함수ft_deletespace : str과 index를 인자로 받아 index가 공백이 아닌 문자를 가리키도록(공백일 때까지 index++) 하는
void ft_bzero(void \*s, size_t n)앞서 언급한 대로 null character와 -0이 다른 관계로, unsigned char 형 포인터 변수 ret 생성.ret에 s를 unsigned char\*형으로 형변환 시킨 주소를 저장하고, index
void \*ft_calloc(size_t count, size_t size)ft_calloc : size_t형 변수 count와 size를 인자로 받음.size 크기의 변수를 count개 만큼 할당하는 것이므로, count \* size만큼 메모리 할당.할당 실패 시
1. ft_isalnum 용도 인자로 들어온 c가 알파벳인지, 숫자인지 판별하는 함수 아스키 코드로 판별 2. ft_isalnum 프로토타입 >int ft_isalnum(int c) 3. 구현 시 유의사항 ft_isalnum 함수의 인자로 int형 변수 c를 받음
1. ft_isalpha 용도 인자로 들어온 c가 알파벳인지 판별하는 함수 아스키 코드로 판별 2. ft_isalpha 프로토타입 >int ft_isalpha(int c) 3. 구현 시 유의사항 *ft_isalpha 함수의 인자로 int형 변수 c를 받
int ft_isdigit(int c)이는 이 함수가 c언어의 초기부터 존재했던 아주 오래된 표준 함수이기 때문.이전 버전의 c는 함수 프로토타입을 가지고 있지 않았다. 따라서 함수는 하단과 같이 선언되지 않은 상태나 'unknown' 인자로 선언되었다.//non-p
int ft_isdigit(int c)이는 이 함수가 c언어의 초기부터 존재했던 아주 오래된 표준 함수이기 때문.이전 버전의 c는 함수 프로토타입을 가지고 있지 않았다. 따라서 함수는 하단과 같이 선언되지 않은 상태나 'unknown' 인자로 선
int ft_isprint(int c)이는 이 함수가 c언어의 초기부터 존재했던 아주 오래된 표준 함수이기 때문.이전 버전의 c는 함수 프로토타입을 가지고 있지 않았다. 따라서 함수는 하단과 같이 선언되지 않은 상태나 'unknown' 인자로 선언되었다.//non-p
char \*ft_itoa(int n)ft_substitute : 할당된 str의 주소값과 len(길이), n을 인자로 받는 함수.n이 0일 때 str0에 0 대입, n이 0이 아닐 때까지 str의 len - index - 1번째 인덱스에 n을 10으로 나눈 나머지 +
lst에 new를 추가하려고 하는데, 무턱대고 *lst = new를 하면 안된다. --> 현재 *lst가 가리키는 값은 연결 리스트의 제일 첫번째 노드의 주소이며, 우리는 연결 리스트의 마지막에 new를 추가하려고 한다.
lst가 NULL이면 리스트가 존재하지 않고, new가 NULL이면 new노드가 존재하지 않는다는 뜻. 이 때에는 추가할 노드가 없거나 추가할 리스트가 없는 것이므로 return;
lst가 NULL이면 리스트가 존재하지 않는다는 뜻. 이 때에는 삭제할 리스트가 없는 것이므로 return; 노드의 요소(content)와 노드를 삭제할 때, free(lst)한 이후 lst는 그 다음 노드를 가리킬 수 없으므로 그 다음 노드의 주소를 t_list 포
lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 삭제할 리스트가 없는 것이므로 return; del()함수가 NULL이면 lst의 content를 free하는 기능을 수행하지 못하므로 바로 return;
연결 리스트는 배열과 같은 선형 자료구조로, 하단의 사진과 같이 노드들이 메모리 상에 연속적으로 저장되어 있지 않고 포인터로 연결되어 있는 리스트이다.링크드 리스트의 제일 첫 노드를 가리키는 포인터가 있다.(하단의 사진에서는 head 변수)각 노드들은 value를 저장
lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 마지막 노드를 가리킬 수 없으므로 return (NULL); lst의 next가 존재한다는 뜻은, lst가 마지막 노드가 아니라는 뜻이다. 따라서 lst의 next가 NULL이 아닐 때까지 리스트를 탐색한다.
lst가 NULL이면 리스트가 비어 있다는 뜻. lst의 content를 이용해야 하나 lst가 비어 있으므로 NULL을 리턴해 주면 됨. 이 부분은 따로 구현하지 않았고, lst가 NULL이면 while문을 돌지 않고 node가 NULL인 채로 리턴됨.
만든 새 노드의 주소를 t_list형 포인터 new에 저장하는데, 만약 malloc으로 t_list의 크기만큼 메모리를 할당하지 못했을 때는 NULL을 반환한다. 새 노드의 next에는 `NULL`, content에는 `인자로 받은 content`를 넣어준다.
lst가 NULL이면 리스트는 비어있다는 뜻으로 0을 리턴해야 한다.
1. ftputcharfd 용도 파라미터로 들어오는 fd와 char변수 c를 이용해 c를 출력하는 함수 2. ftputcharfd 프로토타입 3. 파일 디스크립터란? 유닉스 시스템에서 프로세스가 특정 파일에 접근하기 위한 추상적인 키.
유닉스 시스템에서 프로세스가 특정 파일에 접근하기 위한 추상적인 키.모든 프로세스(프로그램이 메모리에 적재된 것. 프로그램의 인스턴스)가 갖추어야 하는 표준 POSIX 파일 서술자는 하단과 같다.file descriptor의 값은 unsigned int 값이므로 음수가
n이 -2147483648, 즉 int형 min값일 때는 n에 -1을 곱한 수가 int overflow가 발생한다. 이를 예외처리 해 주어야 한다. 재귀를 이용해 코드를 구현했다. n의 각 자릿수에 '0'을 더한 값을 출력하기 위해 n의 범위를 나누어준다.
이전에 구현한 ft_putchar_fd()를 이용해 구현한다. ft_putchar_fd()는 이전의 포스트를 참고하자. file descriptor의 값은 내부적으로 unsigned int값을 이용하므로 음수가 되어서는 안된다. 따라서 음수일 때 return
사람마다 코드를 구현하는 방식이 다르겠지만, 내가 코드를 짰을 때의 주의할 점을 서술하겠다 1 ) 문자 c를 기준으로 쪼개어 만들어진 문자열의 개수를 셀 때 주의점.문자 c와 문자 c가 아닌 것의 쌍으로 문자열의 개수를 세었다면 s의 제일 첫번째 값이 c인지 c
검색할 문자 c는 int로 주어지기 때문에 char로 형변환하여 검색한다.검색할 문자 c가 '\\0'일 때는 sindex가 '\\0'일 때도 검색해야 함에 주의한다.(1) sindex가 '\\0'이 아닐 때까지 sindex가 c인지 검색한다.(2) sindex == (
함수 내부에서 지역 변수로 문자열을 만들고 복사하면 이 문자열 복사본은 스택 영역에 저장되어 있기 때문에 함수 종료 시 사라지게 된다. 따라서 함수 종료 후에도 이용하기 위해 힙 영역에 공간을 할당하고 그 공간에 저장을 해야 하는데, 이 때 이용하는 함수가 malloc
메모리 할당에 실패했을 때 NULL을 반환한다.합친 문자열의 맨 뒤에는 '\0'이 존재해야 함.(1) s1의 length를 저장하는 sindex1, s2의 length를 저장하는 sindex2, 새로 만든 문자열의 index를 가리키는 strindex, s1과 s2의
size_t type 변수 index를 이용해 str문자열의 길이를 구한다.(1) size_t type 변수 index 선언 후 0으로 초기화.(2) strindex != '\\0'일 때까지 index증가.(3) index 반환.
일차원 배열을 먼저 할당하고 그 배열에 s의 요소들에 f함수를 적용한 것을 차례대로 넣는다.만든 문자열의 가장 끝에는 '\\0'문자가 들어 있어야 한다.할당 실패 시 NULL을 반환한다.(1) 할당 할 사이즈을 알기 위해 s의 길이를 ft_strlen()을 통해 len
내가 짠 코드에서는 s1index != '\\0'이 아니고, index가 n보다 작을때 s1과 s2를 비교하였다.이 때 주의해야 할 것이, index가 아직 n보다 작은데 s1의 길이가 n보다 작을 때이다. 이때는 s1index가 '\\0'인데 이 때에도 s2와 비교를
1, ft_strnstr 용도
검색할 문자 c는 int로 주어지기 때문에 unsigned char로 형변환하여 검색한다.\--> char로 형변환하지 않는 이유는, 특정 아키텍쳐 cpu를 사용하는 환경에서는 unsigned char가 디폴트이다.이러한 환경에서 char을 사용했을 때 unsigned
만약 s1에 set이 아닌 문자가 없다면 반환할 str에 1만큼을 할당해주고, 할당한 메모리에 0을 넣고 str을 리턴한다.할당에 실패했다면 NULL을 반환한다.반환할 문자열의 끝에는 '\\0'문자가 들어 있어야 한다.1 ) ft_isin() : 인자로 find문자와
1. ft_substr 용도 ftsubstr은 파라미터로 문자열 s와 unsigned int start, sizet len을 갖는다. 문자열을 자를 때 이용하며, 문자열 s의 start번째부터 len길이만큼 문자열을 자르는 함수이다.
ft_tolower 함수의 인자로 int형 변수 c를 받음.따라서 이 c를 char로 변환해서 비교하던지, 혹은 아스키 코드표 상의 번호로 대문자인지 소문자인지 판별.하단의 코드에서는 아스키 코드 상의 번호로 판별하였음.이는 이 함수가 c언어의 초기부터 존재했던 아주
ft_toupper 함수의 인자로 int형 변수 c를 받음.따라서 이 c를 char로 변환해서 비교하던지, 혹은 아스키 코드표 상의 번호로 대문자인지 소문자인지 판별.하단의 코드에서는 아스키 코드 상의 번호로 판별하였음.이는 이 함수가 c언어의 초기부터 존재했던 아주
c를 만나지 못했을 시에 NULL반환c를 만났을 때에는 dest의 c다음 값을 가리키는 주소를 리턴함.즉 복제가 끝난 dest의 다음 번지(추가 복제의 용이성 위함)<중요>검색할 문자 c는 int로 주어지기 때문에 unsigned char로 형변환하여 검색한다.\
value를 만나지 못했을 시에 NULL 반환<중요>검색할 문자 value는 int로 주어지기 때문에 unsigned char로 형변환하여 검색한다.\--> char로 형변환하지 않는 이유는, 특정 아키텍쳐 cpu를 사용하는 환경에서는 unsigned char가
s1과 s2가 n바이트까지 모두 같다면 0반환.index는 size_t n과 비교해야 하므로 size_t로 선언.<중요>s1과 s2를 unsigned char \*로 형변환해야 한다. \--> unsigned char는 모든 bit를 투명하게 볼 수 있는 특성을
다른 str함수들과는 다르게 source의 '\\0'을 검사하지 않는다.dest와 source가 같다면 아무 동작도 하지 않고 dest의 주소를 리턴하면 된다.<중요>dest와 source를 unsigned char \*로 형변환해야 한다. \--> unsigne
1. ft_memset 용도 이 함수는 파라미터로 void *b, int c, size_t len을 가진다. b를 len의 범위만큼 c로 초기화하고 b의 주소를 리턴하는 함수이다. 2. ft_memset 프로토타입 > 3. 구현 시 유의사항 값을 모두 채
src와 dest가 둘 다 NULL일 때, NULL(dest)값을 반환.dest와 src의 주소를 비교하여 연산한다.\--> dest < src라면 뒤에서부터 복사해야 제대로 복사된다.앞에서부터 복사하면 '맨 앞의 값'만 복사되기 때문에 뒤에서부터 복사해야 한다.
dst에 src를 size - 1만큼 복사한 뒤 마지막에 '\\0'을 넣는다.dst가 NULL이면 복사할 공간이 없는 것이므로 0리턴.src가 NULL이면 src의 길이인 0리턴.index < dstsize - 1이 아닌 index + 1 < dstsize로
size는 '\\0'을 포함한 길이라는 것에 유의한다.다른 mem함수들과는 다르게 src에서 '\\0'이 나오는 것에 유의해야 한다.dst의 마지막 부분에 '\\0'을 넣어줘야 한다.dstlen + index < size - 1로 하지 않고 dstlen + ind