더북(TheBook)

C 라이브러리는 스트링을 숫자 값으로 변환하는 함수로 strtod말고도 strtoul, strtol, strtoumax, strtoimax, strtoull, strtoll, strtold, strtof도 제공한다.

이름 끝에 붙어서 타입을 가리키는 문자는 다음과 같다. uunsigned, l(알파벳 L)은 long, ddouble, ffloat을 가리키고, imaxumax는 각각 intmax_tuintmax_t를 가리킨다.

strtoul처럼 정수 값을 리턴하는 인터페이스는 모두 매개변수가 세 개다.

unsigned long int strtoul(char const nptr[restrict],
                          char** restrict endptr,
                          int base);

이 함수는 nptr이 가리키는 스트링을 밑이 base인 숫자로 변환한다. 주로 0, 8, 10, 16base 값으로 사용한다. 8, 10, 16은 각각 8진수, 10진수, 16진수 인코딩을 의미한다. 0은 세 가지 인코딩을 조합했다는 뜻으로, 텍스트에 나오는 숫자를 해석하는 데 적용되는 규칙에 따라 밑을 선택한다. 가령 "7"은 10진수로, "007"은 8진수로, "0x7"은 16진수로 해석한다. 좀 더 정확히 설명하면 이 스트링은 네 부분(공백, 부호, 숫자, 나머지 데이터)으로 구성됐다고 해석할 수 있다.

두 번째 매개변수는 나머지 데이터의 위치를 구할 때 사용하는데, 아직은 제대로 이해하기 힘들 것이다. 지금은 이 값을 0으로 지정해도 작동하는 데 문제없다는 것만 알고 넘어가자. 흔히 사용하는 매개변수 조합은 strtoul(S, 0, 0)이다. 이렇게 하면 입력 서식에 관계없이 S를 숫자로 해석한다. 부동 소수점을 제공하는 세 함수도 작동 방식은 비슷하고, 함수 매개변수의 개수가 두 개로 제한된다는 점만 다르다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.