문자열을 정수 값으로 long 변환합니다.
구문
long strtol(
const char *string,
char **end_ptr,
int base
);
long wcstol(
const wchar_t *string,
wchar_t **end_ptr,
int base
);
long _strtol_l(
const char *string,
char **end_ptr,
int base,
_locale_t locale
);
long _wcstol_l(
const wchar_t *string,
wchar_t **end_ptr,
int base,
_locale_t locale
);
매개 변수
string
변환할 Null 종료 문자열입니다.
end_ptr
마지막으로 해석된 문자 뒤의 문자를 가리키도록 설정된 출력 매개 변수입니다. 무시됨(있는 경우 NULL)
base
사용할 기수입니다.
locale
사용할 로캘입니다.
반환 값
strtol, wcstol, _strtol_l및 _wcstol_l 에 표시된 값을 반환합니다 string. 변환이 가능하지 않으면 0을 반환합니다. 표현으로 인해 오버플로가 발생하면 반환 LONG_MAX 되거나 LONG_MIN.
errno 은 오버플로 ERANGE 또는 언더플로가 발생하는 경우로 설정됩니다. 이 값은 다음과 같은 경우 EINVAL 로 string 설정됩니다NULL. 또는 0이 아니고 2보다 작거나 36보다 큰 경우 base 및 기타 반환 코드에 대한 ERANGE자세한 내용은 , EINVAL, errno및_sys_nerr.
설명
strtol, wcstol, _strtol_l및 _wcstol_l 함수는 .로 string변환 long 됩니다. 숫자의 일부로 인식되지 않는 첫 번째 문자에서 읽기 string 를 중지합니다. 종결 null 문자이거나 첫 번째 영숫자 문자가 1보다 크거나 같을 수 있습니다 base.
wcstol 및 _wcstol_l 는 strtol 및 _strtol_l의 와이드 문자 버전입니다. 해당 string 인수는 와이드 문자열입니다. 이러한 함수는 동일하게 동작하고strtol, 그렇지 않으면 동일하게 _strtol_l 동작합니다. 로캘의 LC_NUMERIC 범주 설정은 에 있는 반지름 문자(소수점 또는 소수점) string의 인식을 결정합니다. 함수 및 strtolwcstol 현재 로캘을 사용합니다.
_strtol_l 전달 _wcstol_l 된 로캘을 대신 사용합니다. 자세한 내용은 참조 및 로캘을 참조setlocale하세요.
이 경우 end_ptrNULL무시됩니다. 그렇지 않으면 검색을 중지한 문자에 대한 포인터가 가리키는 위치에 end_ptr저장됩니다. 유효한 숫자를 찾을 수 없거나 잘못된 기준이 지정된 경우에는 변환이 불가능합니다.
string 값은 다음이 가리키는 end_ptr위치에 저장됩니다.
strtol에서는 string이 다음 형식의 문자열을 가리켜야 합니다.
[
whitespace] [{+|-}] [0[{x|X}]] [alphanumerics]
대괄호([ ]) 서라운드 선택 요소입니다. 단일 요소에 대한 중괄호 및 세로 막대({ | }) 서라운드 대안입니다.
whitespace 는 무시되는 공백 및 탭 문자로 구성될 수 있습니다.
alphanumerics 는 10진수 또는 문자 'a' ( 'z' 또는 'A''Z'통과)입니다. 이 양식에 맞지 않는 첫 번째 문자는 검사를 중지합니다. 2에서 36 사이이면 base 숫자의 기준으로 사용됩니다. 이 base경우 0 가리키는 문자열 string 의 초기 문자가 기본을 결정하는 데 사용됩니다. 첫 번째 문자가 0고 두 번째 문자가 아닌 'x''X'경우 문자열은 8진수 정수로 해석됩니다. 첫 번째 문자가 '0' 두 번째 문자 'x' 이거나 'X'문자열이 16진수 정수로 해석됩니다. 첫 번째 문자가 '1' 통과 '9'하면 문자열이 10진수 정수로 해석됩니다. 문자 'a' 통과 'z' (또는 'A' 통과 'Z')에는 10에서 35까지의 값이 할당됩니다. 검색에서는 값이 .보다 base작은 문자만 허용합니다. 밑의 범위를 벗어난 첫 번째 문자가 발견되면 검색이 중지됩니다. 예를 들어 .string"01"
base이 경우 0 스캐너는 8진수 정수라고 가정합니다. 또는 '8''9' 문자가 검사를 중지합니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
일반 텍스트 루틴 매핑
| TCHAR.H 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
|---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
요구 사항
| 루틴에서 반환된 값 | 필수 헤더 |
|---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> 또는 <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> 또는 <wchar.h> |
_strtol_l 및 _wcstol_l 함수는 표준 C 라이브러리의 일부가 아닌 Microsoft 전용입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
strtod에 대한 예를 참조하세요.
참고 항목
데이터 변환
로캘
localeconv
setlocale, _wsetlocale
문자열에서 숫자 값 함수로
strtod, _strtod_l, wcstod_wcstod_l
strtoll, _strtoll_l, wcstoll_wcstoll_l
strtoul, _strtoul_l, wcstoul_wcstoul_l
atof, _atof_l, _wtof_wtof_l