strtol 예제

아래 표시된 프로그램은 strtol()의 사용을 보여 줍니다. 첫 번째 명령줄 인수는 strtol()이 숫자를 구문 분석해야 하는 문자열을 지정합니다. 두 번째(선택 사항) 인수는 변환에 사용할 기준을 지정합니다. (이 인수는 atoi(3)를 사용하여 숫자 형식으로 변환됩니다. 오류 검사를 수행하지 않고 strtol()보다 더 간단한 인터페이스가 있는 함수입니다. 이 프로그램에서 생성된 결과의 몇 가지 예는 다음과 같습니다. 언더플로우가 발생하면 strtol()은 LONG_MIN을 반환합니다. 오버플로가 발생하면 strtol()은 LONG_MAX를 반환합니다. 두 경우 모두 errno는 ERANGE로 설정됩니다. 스트톨()에 대해 정확히 동일한 홀드(LONG_MIN 및 LONG_MAX 대신 LLONG_MIN 및 LLONG_MAX)가 있습니다. C 라이브러리 함수 long int strtol(const char* str, char **endptr, int base)은 str에서 문자열의 초기 부분을 지정된 베이스에 따라 긴 int 값으로 변환하며, 이는 2에서 36 사이이거나 특수 값 0이어야 합니다. strtoll() 함수는 strtol() 함수처럼 작동하지만 긴 정수 값을 반환합니다. strtol()은 SVr4, 4.3BSD, C89, C99 및 POSIX.1-2001 및 strtoll() 에서 C99 및 POSIX.1-2001을 준수합니다.

endptr이 NULL이 아닌 경우 strtol()은 첫 번째 유효하지 않은 문자의 주소를 *endptr에 저장합니다. 자릿수가 전혀 없는 경우 strtol()은 nptr의 원래 값을 *endptr(0)에 저장합니다. 특히 *nptr이 “이 아니라 **endptr이 반환 시 “이면 전체 문자열이 유효합니다. 함수는 성공한 경우 변환된 부동 소수점 번호를 긴 int 값으로 반환합니다. 유효한 변환을 수행할 수 없는 경우 0 값이 반환됩니다. 값이 범위를 벗어난 경우 LONG_MAX 또는 LONG_MIN이 반환됩니다. str.가 가리키는 바이트 문자열의 정수 값을 해석하여 첫 번째 공백이 아닌 문자가 발견될 때까지 공백 문자(isspace()를 호출하여 식별됨)를 삭제한 다음 가능한 한 많은 문자를 사용하여 유효한 base-n(여기서 n=base)을 형성합니다. 정수 번호를 표현하고 정수 값으로 변환합니다. 유효한 정수 값은 다음 부분으로 구성됩니다. str_end가 NULL이면 무시됩니다.

베이스 값이 0이면 숫자 베이스가 자동으로 감지됩니다: 접두사가 0이면 접두사가 옥탈이고 접두사가 0x 또는 0X인 경우, 베이스는 헥사데피문이고, 그렇지 않으면 기준은 소수점입니다. 현재 설치된 C 로캘에서 추가 숫자 형식을 사용할 수 있습니다. 기본값에 대한 유효한 값 집합은 {0,2,3,,…, 36}입니다. 기본-2 정수에 대한 유효한 숫자 집합은 {0,1}이고 기본 3 정수의 경우 {0,1,2}입니다. 10보다 큰 베이스의 경우 유효한 숫자에는 기본-11 정수의 Aa에서 기본-36 정수의 경우 Zz까지 시작하는 알파벳 문자가 포함됩니다. 문자의 대/소문자는 무시됩니다. (C99에는 적용되지 않음) 지정된 베이스에는 지원되지 않는 값이 포함되어 있습니다. 이 함수는 변환된 정수 수를 긴 int 값으로 반환하고, else 0 값이 반환됩니다. 문자열의 나머지 는 지정된 베이스에서 유효한 숫자가 아닌 첫 번째 문자에서 중지하는 명백한 방식으로 긴 int 값으로 변환됩니다.