본문 바로가기
SMALL

Language60

C042_Makefile 만들기 makefile에 대해 설명하기에 앞서서 컴파일에 대해 조금은 알아야 할 필요가 있습니다. 컴파일이란? 저희가 작성하는 프로그래밍언어를 기계어로 바꾸어 Object(오브젝트) 파일을 만드는 것입니다. Makefile은 왜 만드는 것일까요? 여러 개의 c파일들을 한꺼번에 컴파일을 할 경우가 가끔 생깁니다. 그때 Makefile을 만드면 make명령어 한 번으로 필요한 모든 c파일들을 Object(오브젝트) 파일로 만들 수 있습니다. makefile의 사용 이유를 알았으니 어떻게 작성하는지 알아보도록 하겠습니다. 변수 만들기 변수 이름은 대문자로 설정해야 합니다. CC = cc FLAG = -Wall -Wextra -Werror -c NAME = finish.a SOURCE = ./test1.c ./test.. 2023. 12. 29.
C041_read함수 사용하기 시작하기에 앞서서 파일디스크립터에 대해 알아보도록 하겠습니다. 파일 디스크립터(File Descriptor)란? 리눅스 혹은 유닉스 계열의 시스템에서 프로세스(process)가 파일(file)을 다룰 때에 사용하는 개념입니다. 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값입니다. 이때 파일 디스크립터 양수 값으로 저장이 되며 0, 1, 2는 아래와 같은 이유로 사용되기 때문에 제외됩니다. 0 : 표준 입력(Standard Input) 1 : 표준 출력(Standard Output) 2 : 표준 에러(Standard Error) 이제 파일을 열어보도록 하겠습니다. open함수를 사용해서 파일을 열게 됩니다. open() 함수 헤더 : fcntl.h 형태 : int open(const char *.. 2023. 12. 28.
C040_strlen 함수 구현해서 사용하기 우선 strlen함수를 사용해 봅시다. strlen은 문자열의 길이를 측정해 주는 함수입니다. #include #include int main() { printf("%d\n", (int)strlen("abcd")); return 0; } strlen은 어떤 자료형으로 출력을 할 것인지 정해주어야 합니다. 즉, 크기를 정해주어야 합니다. 저희가 이번에 만들 strlen함수는 int자료형을 반환해 주는 함수를 만들어 보도록 하겠습니다. strlen int OdOp_strlen(char *str) { int i; i = 0; while (str[i] != '\0') i++; return (i); } str문자열의 index를 기준으로 null문자가 나올 때까지 하나하나 읽습니다. null이 나온 인덱스 번호가.. 2023. 12. 8.
C039_putnbr만들기 write함수만을 사용해서 정수형을 출력해 보도록 하겠습니다. OdOp_putnbr #include void OdOp_putnbr(int nb) { char c; int i; if (nb == -2147483648) { write(1, "-2147483648", 11); return ; } else if (nb 9) { i = nb / 10; OdOp_putnbr(i); nb = nb % 10; } c = nb + 48; write(1, &c, 1); } 우선 overflow가 나올 수 있는 부분을 처리해 주었습니다. 정수형 최솟값인 '-2147483648'을 양수로 바꾸게 된다면 overflow가 됩니다. 이를 방지.. 2023. 12. 6.
LIST