strtoul(3) - wariua/manpages-ko GitHub Wiki
strtoul, strtoull, strtouq - λ¬Έμμ΄μ λΆνΈ μλ long μ μλ‘ λ³ννκΈ°
#include <stdlib.h>
unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr,
int base);glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
strtoull(): -
_ISOC99_SOURCE
|| /* glibc λ²μ <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
strtoul() ν¨μλ nptrμ μλ λ¬Έμμ΄μ μ²μ λΆλΆμ μ§μ ν baseμ λ°λΌ unsigned long int κ°μΌλ‘ λ³ννλ€. κΈ°μλ 2μ 36 μ¬μ΄μ΄κ±°λ νΉμν κ° 0μ΄μ΄μΌ νλ€.
λ¬Έμμ΄μ΄ μμ κ°μμ 곡백(isspace(3)μΌλ‘ νλ¨)μΌλ‘ μμν μ μμΌλ©° κ·Έ λ€μμ μ νμ μΌλ‘ '+' λ΄μ§ '-' λΆνΈ ν κ°κ° μ¬ μ μλ€. baseκ° 0μ΄λ 16μ΄λ©΄ λ¬Έμμ΄μμ λ€μμ "0x" μ λλΆκ° μμ μ μμΌλ©°, κ·Έλ¬λ©΄ μλ₯Ό 16μ§μλ‘ μ½μ΄ λ€μΈλ€. κ·Έλ μ§ μκ³ λ€μ λ¬Έμκ° '0'μ΄λ©΄ base 0μ 8λ‘ (8μ§μλ‘) λ°μλ€μ΄λ©°, μλλ©΄ 10μΌλ‘ (10μ§μλ‘) λ°μλ€μΈλ€.
λ¬Έμμ΄ λλ¨Έμ§λ₯Ό λͺ
λ°±ν λ°©μμΌλ‘ unsigned long int κ°μΌλ‘ λ³ννλ©° ν΄λΉ κΈ°μμμ μ ν¨ μ«μκ° μλ 첫 λ²μ§Έ λ¬Έμμμ λ©μΆλ€. (κΈ°μκ° 10λ³΄λ€ ν° κ²½μ° λμλ¬Έμ κΈμ 'A'κ° 10μ, 'B'κ° 11μ λνλ΄λ©°, κ·Έλ° μμΌλ‘ 'Z'κ° 35λ₯Ό λνλΈλ€.)
endptrμ΄ NULLμ΄ μλλ©΄ strtoul()μ 첫 λ²μ§Έ λΉμ ν¨ λ¬Έμμ μ£Όμλ₯Ό *endptrμ μ μ₯νλ€. μ«μκ° μ ν μμμΌλ©΄ strtoul()μ nptrμ μλ κ°μ *endptrμ μ μ₯νλ€. (κ·Έλ¦¬κ³ 0μ λ°ννλ€.) νΉν *nptrμ΄ '\0'μ΄ μλλ° λ°ν μ **endptrμ΄ '\0'μ΄λ©΄ λ¬Έμμ΄ μ μ²΄κ° μ ν¨ν κ²μ΄λ€.
strtoull() ν¨μλ strtoul() ν¨μμ²λΌ λμνλ unsigned long long int κ°μ λ°ννλ€.
μλ κ°μ΄ μ€λ²νλ‘μ° λμ§ μμΌλ©΄ strtoul() ν¨μλ λ³ν κ²°κ³Όλ₯Ό, λλ μμ μμ λΆνΈκ° μμμΌλ©΄ λΆνΈ μλ κ°μΌλ‘ ννν λ³ν κ²°κ³Όμ λ°μλ₯Ό λ°ννλ€. μ€λ²νλ‘μ°κ° μΌμ΄λλ©΄ strtoul()μ ULONG_MAXλ₯Ό λ°ννλ©° errnoλ₯Ό ERANGEλ‘ μ€μ νλ€. κ°μ λ΄μ©μ΄ strtoull()μ (ULONG_MAX λμ ULLONG_MAXλ‘) μ μ©λλ€.
EINVAL- (C99μλ μμ) μ§μ ν
baseκ° μ§μνμ§ μλ κ°μ λ΄κ³ μλ€. ERANGE- κ²°κ³Ό κ°μ΄ λ²μλ₯Ό λ²μ΄λ¬λ€.
ꡬνμμ λ³νμ μ ν μννμ§ μμ κ²½μ°μ (μ«μ μμ, 0 λ°ν) errnoλ₯Ό EINVALλ‘ μ€μ ν μλ μλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
| μΈν°νμ΄μ€ | μμ± | κ° |
|---|---|---|
strtoul(), strtoull(), strtouq()
|
μ€λ λ μμ μ± | MT-Safe locale |
strtoul(): POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4.
strtoull(): POSIX.1-2001, POSIX.1-2008, C99.
strtoul()μ΄ μ±κ³΅κ³Ό μ€ν¨ μ΄λ μͺ½μμλ μ λ²νκ² 0μ΄λ ULONG_MAXλ₯Ό (strtoull()μμ ULLONG_MAX) λ°νν μ μμΌλ―λ‘ νΈμΆ νλ‘κ·Έλ¨μμλ νΈμΆ μ μ errnoλ₯Ό 0μΌλ‘ μ€μ νκ³ μ νΈμΆ νμ errnoκ° 0 μλ κ°μΈμ§ κ²μ¬ν΄μ μ€λ₯κ° λ°μνλμ§ νμΈν΄μΌ νλ€.
"C" μΈμ λ‘μΊμμ λ€λ₯Έ μ«μ λ¬Έμμ΄λ€μ λ°μλ€μΌ μλ μλ€. (μλ₯Ό λ€μ΄ νμ¬ λ‘μΊμ μ² λ¨μ ꡬλΆμλ₯Ό μ§μν μλ μλ€.)
BSDμλ μμ ν μ μ¬νκ² μ μλ λ€μ ν¨μκ° μλ€.
u_quad_t strtouq(const char *nptr, char **endptr, int base);νμ¬ μν€ν
μ²μ μλ ν¬κΈ°μ λ°λΌ strtoull()μ΄λ strtoul()κ³Ό λλ±ν μ μλ€.
μμ κ°μ μ ν¨ν κ²μΌλ‘ 보μ μ‘°μ©ν λλ±ν unsigned long int κ°μΌλ‘ λ³ννλ€.
strtol(3) λ§€λ΄μΌ νμ΄μ§μ μλ₯Ό μ°Έκ³ νλΌ. μ΄ λ§€λ΄μΌ νμ΄μ§μμ κΈ°μ νλ ν¨μλ€κ³Ό μ¬μ© λ°©μμ΄ λΉμ·νλ€.
a64l(3), atof(3), atoi(3), atol(3), strtod(3), strtol(3), strtoumax(3)
2019-03-06