함수를 다 만들고 테스터기를 돌렸더니 libft-unit-test
에서 KO가 발생하셨나요?
atoi
는 int
범위까지 변환하는건데 long
범위에서 동작하지 않는게 뭔상관이야? 라고 생각했다가 리트를 하게 됐습니다....하하 (평바평이니 KO가 뜨더라도 통과하실 수도 있습니다!)
이 글은 위 두개의 KO를 OK로 바꾸고 싶으신 분들께 약간의 도움을 드리고자 작성했습니다. **코드
는 안적었으니 마음편히 보셔도 됩니다!**
**atoi**
의 매뉴얼을 본다.
int atoi(const char *str);
atoi()
함수는 str
이 가리키는 문자열의 초기 부분을 int
표현으로 변환한다.
다음과 같다: **(int)strtol(str, (char **)NULL, 10);**
**strtol**
의 매뉴얼을 본다.
strtol(const char *str, char **endptr, int base);
strtol()
함수는 str
의 문자열을 long
값으로 변환한다.base
에 따라 수행된다.isspace()
에 의해 결정됨)으로 시작하고 ‘+’ ‘-’ 기호가 올 수 있다.long
값으로 변환되어 주어진 base
에서 유효한 숫자가 아닌 첫 번째 문자에서 멈춘다.strtol()
함수는 변환결과를 반환한다. 변환을 수행할 수 없으면 0이 반환된다.LONG_MIN
, LONG_MAX
값이 반환된다.원형 atoi
는 strtol(str, (char **)NULL, 10)
을 호출하고, 그 결과값을 int
타입으로 형변환해서 반환합니다.
ft_atoi
는 **‘str
을 long
타입으로 변환한 값’**을 **‘int
타입으로 형변환’**해서 반환하도록 수정하면 됩니다!
long
타입으로 변환한다.
LONG_MAX
를 저장한다. underflow가 발생하면 LONG_MIN
를 저장한다.long
타입으로 변환한 값을 int
타입으로 형변환해서 반환한다.