개요
인자값으로 들어온 값을 해당 함수의 조건에 맞춰 변환 및 판별을 해주는 함수를 알아보겠습니다.
atoi
SYNOPSIS
함수 원형
: int ft_atoi(const char *str)함수 라이브러리
: #includeconst char *str
: 세팅할 메모리의 주소리턴값
: 문자열에서 추출한 정수
DESCRIPTION
str으로 들어온 문자열을 검사한다.
화이트스페이스 문자와 부호 문자를 모두 건너뛰고 정수만 추출하여 정수형으로 반환한다.
atoi CODE
1 |
|
skip함수는 화이트 스페이스와 공백을 모두 건너뛰는 함수이다.
특이한 점으로는 skip함수 앞에 static을 사용했다. 이는 정적함수로 구현한 것을 의미하며 정적함수로 구현할 경우에는 같은 소스코드 안에서만 사용할 수 있다.
static을 붙여줌으로써 같은 이름의 함수를 다른 소스코드에서 선언하고 같이 컴파일을 돌려도 에러가 나지 않게 된다.
안정성을 좀 더 부여하므로 붙여주는 습관을 기르도록 하자.
atoi함수에서 리턴해줄 변수를 long long
으로 선언해준것은 -2147483648 때문이다.
나는 함수를 설계할 때 음수가 들어오면 우선 계산은 양수로 진행한 후 마지막에 음수를 계산해주도록했다.
int의 범위는 -2147483648 ~ 2147483647 까지 이므로 표현을 할 수가 없다.
atoi함수에서 int형을 벗어나는 문자열을 변환해야한다면 리턴값이 부호에 따라 다르다.
is**
SYNOPSIS
함수 원형
: int is*****(int c);함수 라이브러리
: #includeint c
: 판별할 문자리턴값
: 함수가 원하는 조건에 부합하는 문자이면 1 아니면 0
DESCRIPTION
인자값으로 들어온 c를 해당하는 함수의 조건에 부합하는지 판별하여 부합하면 1 아니면 0을 리턴
is** CODE
1 |
|
isalpha == (‘a’ <= c && c <= ‘z’) | (‘A’ <= c && c <= ‘Z’) |
isalnum == (‘a’ <= c && c <= ‘z’) | (‘A’ <= c && c <= ‘Z’) | (‘0’ <= c && c <= ‘9’) |
isascii == (0 <= c && c <= 127)
isdigit == (‘0’ <= c && c <= ‘9’)
isprint == (32 <= c && c <= 126)
to**
SYNOPSIS
함수 원형
: int to*****(int c);함수 라이브러리
: #includeint c
: 바꿀 문자리턴값
: 바꾼 문자
DESCRIPTION
인자값으로 들어온 c를 해당하는 함수의 조건에 부합하는지 판별하여 부합하면 변환하여 리턴
to** CODE
1 |
|
tolower == (‘A’ <= c && c <= ‘Z’)/ + toupper == (‘a’ <= c && c <= ‘z’)/ -