strtoul(3) - wariua/manpages-ko GitHub Wiki

NAME

strtoul, strtoull, strtouq - λ¬Έμžμ—΄μ„ λΆ€ν˜Έ μ—†λŠ” long μ •μˆ˜λ‘œ λ³€ν™˜ν•˜κΈ°

SYNOPSIS

#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

DESCRIPTION

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 값을 λ°˜ν™˜ν•œλ‹€.

RETURN VALUE

μ›λž˜ 값이 μ˜€λ²„ν”Œλ‘œμš° λ˜μ§€ μ•ŠμœΌλ©΄ strtoul() ν•¨μˆ˜λŠ” λ³€ν™˜ κ²°κ³Όλ₯Ό, λ˜λŠ” μ•žμ— 음수 λΆ€ν˜Έκ°€ μžˆμ—ˆμœΌλ©΄ λΆ€ν˜Έ μ—†λŠ” κ°’μœΌλ‘œ ν‘œν˜„ν•œ λ³€ν™˜ 결과의 반수λ₯Ό λ°˜ν™˜ν•œλ‹€. μ˜€λ²„ν”Œλ‘œμš°κ°€ μΌμ–΄λ‚˜λ©΄ strtoul()은 ULONG_MAXλ₯Ό λ°˜ν™˜ν•˜λ©° errnoλ₯Ό ERANGE둜 μ„€μ •ν•œλ‹€. 같은 λ‚΄μš©μ΄ strtoull()에 (ULONG_MAX λŒ€μ‹  ULLONG_MAX둜) μ μš©λœλ‹€.

ERRORS

EINVAL
(C99μ—λŠ” μ—†μŒ) μ§€μ •ν•œ baseκ°€ μ§€μ›ν•˜μ§€ μ•ŠλŠ” 값을 λ‹΄κ³  μžˆλ‹€.
ERANGE
κ²°κ³Ό 값이 λ²”μœ„λ₯Ό 벗어났닀.

κ΅¬ν˜„μ—μ„œ λ³€ν™˜μ„ μ „ν˜€ μˆ˜ν–‰ν•˜μ§€ μ•Šμ€ κ²½μš°μ— (숫자 μ—†μŒ, 0 λ°˜ν™˜) errnoλ₯Ό EINVAL둜 μ„€μ •ν•  μˆ˜λ„ μžˆλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
strtoul(), strtoull(), strtouq() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe locale

CONFORMING TO

strtoul(): POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4.

strtoull(): POSIX.1-2001, POSIX.1-2008, C99.

NOTES

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 κ°’μœΌλ‘œ λ³€ν™˜ν•œλ‹€.

EXAMPLE

strtol(3) 맀뉴얼 νŽ˜μ΄μ§€μ˜ 예λ₯Ό μ°Έκ³ ν•˜λΌ. 이 맀뉴얼 νŽ˜μ΄μ§€μ—μ„œ κΈ°μˆ ν•˜λŠ” ν•¨μˆ˜λ“€κ³Ό μ‚¬μš© 방식이 λΉ„μŠ·ν•˜λ‹€.

SEE ALSO

a64l(3), atof(3), atoi(3), atol(3), strtod(3), strtol(3), strtoumax(3)


2019-03-06

⚠️ **GitHub.com Fallback** ⚠️