42SEOUL 24

[C] File 종류와 함수

파일의 종류 텍스트 파일 (Text File) .txt 확장자를 가지는 파일 사람의 눈으로 쉽게 읽을 수 있는 파일로 문서 편집기를 통해 읽거나 편집 가능한 파일 이러한 형태의 파일은 데이터가 그대로 노출되는 문제가 발생할 수 있다. 바이너리 파일 (Binary File) 컴퓨터를 위한 파일 사람의 눈으로 식별할 수 있는 데이터가 아닌 기계가 식별할 수 있는 0 또는 1로 만들어진 데이터를 저장한 파일의 형태 텍스트에 비해 더 많은 양을 저장할 수 있지만, 눈으로 식별하기 쉽지 않다. 데이터가 그대로 노출되지 않기 때문에 텍스트 파일보다 안전 File 함수 open 파일을 여는 함수 int open(const char *pathname, int flags[, mode_t mode]); pathname :..

42SEOUL 2022.03.08

[C] LIBFT 정리

널가드 c는 유효한 값이 들어온다고 가정하고 만들어진 함수가 대부분이다. relink 보너스에 아카이브 명령어를 넣으면 make bonus 할 때 마다 relink되는 상황 발생 보너스 규칙에 아카이브 명령어 제거하기 메모리 블록을 채우는 기준은 1byte(8bit) memset의 2번째 인자는 내부적으로 unsigned char로 해석 void 포인터 자료형이 정해지지 않았으므로 값을 가져오거나 저장할 크기도 정해지지 않았다. 따라서 void 포인터는 역참조를 할 수 없습니다. const const char *는 포인터가 가르치는 변수의 값이 상수고 char const *는 포인터의 주소가 상수 메모리 누수 체크 malloc -> 메모리 누수 leak -> 누수 발생 체크 ps leaks

42SEOUL 2022.02.13

[C / Libft] Makefile 만들기

Makefile 반복적으로 발생하는 컴파일을 쉽게 하기 위해 사용하는 make 프로그램의 설정 내용이 작성된 기술파일 Makefile 구조 Target : Dependency (tab) Command Target 빌드 대상 이름. 명령에 의해 생성되는 파일 Dependency Target 생성 시 사용되는 파일들 Command Target을 생성하는 명령 여러줄로 작성 가능하며, Dependency 파일이 변경됐거나, 대상 파일이 없을 때 실행됨 shell에서 사용 가능한 명령어 사용 가능 tab 키로 띄운 후 작성 라이브러리를 위한 Makefile 만들기 NAME = libft.a CC = gcc CFLAGS = -Wall -Wextra -Werror AR = ar rcs RM = rm -rf SRCS..

42SEOUL 2022.01.21

[c] LIBFT 2

목차 toupper tolower strchr strrchr memchr memcmp strnstr atoi calloc toupper 헤더 : int toupper(int c) 문자를 매개변수로 받아 소문자만 대문자로 변경하여 반환해준다. 매개변수가 int형으로 문자의 아스키 코드표에 기반한 10진수로 변환되어 들어간다. 다른 모든 문자는 그대로 반환 tolower 헤더 : int tolower(int c) 문자를 인자로 받아 대문자인 경우 소문자로 반환해준다. 다른 모든 문자는 그대로 반환 strchr char *strchr(const char *str, int c) 문자열 내에 일치하는 문자가 있는지 검사하는 함수 문자가 존재하면 해당 위치의 포인터 반환 존재하지 않으면 널포인터 반환 strrchr..

42SEOUL 2022.01.12

[C] size_t

size_t 헤더 : 일종의 데이터타입 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 unsigned 데이터 타입 32bit 머신에선 32bit 사이즈의 unsigned 정수형이다. 여기서 unsigned int라고 하는 글들이 많은데 그냥 '정수'를 의미하는 것이지 int를 의미하는게 아니라고 한다. 64bit 머신에선 64biy 사이즈의 unsigned 정수형 (unsigned long long)이다. 향후 더 큰 머신이 존재하면 그에 따라 더 큰 사이즈가 될 수 있다고 한다. 자칫 unsinged int로 형변환을 하는 경우 범위를 벗어나는 버그를 발생시킬 수도 있다고 한다. 참고 URL https://hashcode.co.kr/questions/754/size_t%EB%8A%94..

42SEOUL 2021.11.18

[C] LIBFT 1

목차 isalpha isdigit isalnum isascii isprint memset bzero memcpy memmove isalpha 헤더 : int isalpha(int c) 매개변수로 들어온 인자가 알파벳 대문자 "A-Z"는 return 1 알파벳 소문자 "a-z"는 return 2 알파벳이 아니면 return 0 을 반환하는 함수 매개변수가 int형이지만 char 형으로 넣어도 아스키코드로 자동으로 형변환되어 들어가게 된다. isdigit 헤더 : int isdigit(int c) 매개변수로 들어온 char 형이 10진수 숫자로 변경이 가능하면 0이 아닌 숫자(true), 불가능하면 0(false)를 반환하는 함수 즉 "0-9"에 매칭되는 문자가 들어오면 true를 반환하는 함수 isalnu..

42SEOUL 2021.11.18

[C] malloc

동적 할당 프로그램 실행 도중에 필요한 메모리 공간을 할당하고 사용 후 해당 공간을 해제하는 것 동적으로 메모리를 할당할 때는 Heap 영역에 할당된다. 헤더 : malloc void *malloc(size_t size); 메모리 할당 함수 할당 받을 메모리 크기를 인자로 받는다. 메모리 할당 성공 : 할당 메모리의 첫 번째 주소 리턴 실패 : NULL 리턴 기본적으로 void* 형으로 반환해주기 때문에, 사용자가 알맞은 용도로 변환하여 사용할 수 있다. ex) int *arr = (int *) malloc (sizeof(int) * n); 1. sizeof(int) * n : n개의 int형 메모리 할당 2. (int *) : 할당된 메모리 주소가 void*형으로 리턴된다. 리턴되는 void*를 사용하..

42SEOUL 2021.10.26

[C] 전처리기, main()

전처리기 컴퓨터 처리에 있어 중심적인 처리를 수행하는 부분을 위해 사전 준비적인 계산을 행하는 프로그램 컴파일 전에 미리 처리하는 문장 ex) #include 파일 처리를 위한 전처리문 라이브러리 폴더에서 헤더파일을 가져와 사용할 수 있게 해준다. 헤더파일 : 자주 쓰는 함수들을 저장해둔 파일 #define 형태 정의를 위한 전처리문 int main() 프로그램 작성시 기능(함수)들을 수행하기 위한 처음 시작점 모든 프로그램은 하나의 시작점만을 가지기 때문에 main 함수는 언제나 항상 하나의 프로그램 내에서는 1개여야 한다. 참고 URL https://wowon.tistory.com/61 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blo..

42SEOUL 2021.10.26

[C] str 함수

목차 strcpy strncpy strlcpy strcmp strncmp strcat strncat strlcat strstr strlen strdup strcpy char* strcpy(char* destination, const char* origin); 헤더파일 : return : dest 문자열을 복사하는 함수로 origin에 있는 문자열 전체를 dest로 복사하는 함수 strncpy char* strncpy(char* dest, const char* origin, size_t n); strcpy와 같이 동작하는데, 문자열을 n만큼만 복사하는 함수 origin 문자수가 n 보다 적다면, 모자란 부분은 0으로 생각되어 dest에 복사된다. *** strncpy 함수는 복사시 dest 끝에 반드시 N..

42SEOUL 2021.10.12