born2beroot
42 Seoul2021. 6. 22. 20:48born2beroot

General guidelines (일반 지침) • The use of VirtualBox (or UTM if you can’t use VirtualBox) is mandatory. • VirtualBox (또는 VirtualBox를 사용할 수없는 경우 UTM)의 사용은 필수입니다. • You only have to turn in a signature.txt file at the root of your repository. You must paste in it the signature of your machine’s virtual disk. Go to Submission and peer-evaluation for more information. • 저장소의 루트에있는 signature.txt 파일 만 제..

[42Seoul/GNL] get next line
42 Seoul2021. 6. 12. 13:28[42Seoul/GNL] get next line

이 프로젝트의 목적은 파일 디스크립터로부터 읽혀진, newline으로 끝나는 라인을 반환하는 함수를 코드화 테스트 통과 후 이 프로젝트의 목적은 malloc을 원하는 만큼 크기를 사용하고 나서 free 를 잘 해주었는지 확인하는 작업을 하게 된다. static 함수 사용하면서 read 읽은 것을 저장해야 하고, 개행을 만나게 되면 line 에 넣어줘야 하기 때문에 크기의 변화도 있을 것이며, 그 관리를 잘해줘야 하는 프로젝트이다. 어떤 느낌인지 감이 안온다면 목차의 8번째를 읽어보고 서브젝트를 잘 읽어보면 어떻게 read 해야할 지 감이 조금씩 올 것이다. 그래도 안온다면 옆 사람에게 어떻게 코드가 짜여지는지 대략적인 것을 듣고 만들어 보자. fd(file descriptor) 이 지칭하는 파일에 내용을..

[ft_printf] printf 함수 구현
42 Seoul2021. 5. 13. 19:20[ft_printf] printf 함수 구현

libc의 printf 함수를 다시 구현 Proto type. ▶ int ft_printf(const char *, ...); External functs. ▶ malloc, free, write, va_start, va_arg, va_copy, va_end 처음 보는 va_* 관련 함수는 stdarg 헤더 파일에 정의된 함수들이다 ▼▼▼ man 3 stdarg 를 번역 ▼▼▼ 더보기 #include void va_start(va_list ap, last); type va_arg(va_list ap, type); void va_copy(va_list dest, va_list src); void va_end(va_list ap); 호출 된 함수는 va_start (), va_arg (), va_copy (..

42 Seoul2021. 5. 11. 01:18[42Seoul] libft (part . bonus)

typedef struct s_list { void *content; struct s_list *next; } t_list; 구조체를 주어지고, 이를 이용해서 함수를 작성해야 한다. content : 요소에 포함된 데이터. void 포인터는 어떠한 종류의 자료형이든 저장할 수 있습니다. next : 마지막 요소인 경우에는 NULL. 또는 다음 요소의 주소. t_list *ft_lstnew(void *content); t_list*ft_lstnew(void *content) { t_list*new; if (!(new = (t_list*)malloc(sizeof(t_list)))) return (NULL); new->content = content; new->next = NULL; return (new); ..

42 Seoul2021. 5. 9. 22:04[42Seoul] libft (part. 2)

char *ft_substr(char const *s, unsigned int start, size_t len); char*ft_substr(char const *s, unsigned int start, size_t len) { char*ptr; inti; if (!s) return (NULL); if (start >= ft_strlen(s)) break; if (len >= ft_strlen(s)) len = ft_strlen(s); if (!(ptr = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); i = 0; while (len--) { *(ptr + i) = *(char*)(s + start + i); i++; } *(ptr + i++) =..

42 Seoul2021. 5. 8. 12:31[42Seoul] 함수 포인터

함수 포인터를 만들거나, 구조체에 함수 포인터를 넣거나 반환 값으로 함수포인터를 줄 수도 있다. 함수 포인터는 함수를 저장하는 포인터를 뜻하며, 함수 포인터를 주고 받거나 함수 포인터로 함수를 호출할 수 있다. 1. 반환값과 매개변수가 없는 함수 포인터 ▶ void (*fp)(); void hello() { printf("Hello, World!\n"); } int main() { void (*fp)(); fp = hello; fp(); return (0); } 2. 반환값과 매개변수가 있는 함수 포인터 ▶ int (*fp)(int, int); int add(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int main()..

[42Seoul] libft (part. 1)
42 Seoul2021. 5. 3. 12:28[42Seoul] libft (part. 1)

void *memset(void *b, int c, size_t len); void*ft_memset(void *b, int c, size_t len) { size_ti; unsigned char*ptr; ptr = b; i = 0; while (i++ < len) *ptr++ = (unsigned char)c; return (b); } memory + setting : 메모리를 (특정 값으로) 세팅한다. 문자열 b에 (unsigned char) c 의 값으로 변환 된 len 바이트만큼 씁니다. 첫 번째 인수를 반환합니다. void bzero(void *s, size_t n); voidft_bzero(void *s, size_t n) { unsigned char*ptr; size_ti; i = 0; pt..

42 Seoul2021. 4. 22. 18:15[42Seoul] cat 구현하기

cat 파일 및 표준 입력의 대용을 그대로 표준 출력에 출력하는 명령어 cat 1.txt 위와 같이 사용하면 파일을 읽어와서 출력하게 된다. cat > 2.txt 위와 같이 사용하게 되면 하단에 입력을 할 수 있게되며, (ctrl + d) 를 눌러서 입력을 종료하면 2.txt 파일에 입력받은 내용이 저장된다. cat >> 2.txt 위와 비슷하나 다른 점은 문자열 맨 뒤에 붙여넣기 하는 방식이다. 하단에 입력을 하고 나면 기존에 있던 내용 뒤에 새로운 문자열을 붙여넣게 된다. 알아야 하는 문자열 함수 strcat : 기존 문자열 뒤에 붙여넣기 새로운 문자열을 붙여넣기 strcpy : 기존 문자열을 지우고 새로운 문자열로 복사하기 아래에서 open() 함수에서 사용되는 O_CREAT 는 파일 생성, O_T..

image