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

NAME

strtod, strtof, strtold - ASCII λ¬Έμžμ—΄μ„ λΆ€λ™μ†Œμˆ˜μ μˆ˜λ‘œ λ³€ν™˜ν•˜κΈ°

SYNOPSIS

#include <stdlib.h>

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

strtof(), strtold():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIPTION

strtod(), strtof(), strtold() ν•¨μˆ˜λŠ” nptr이 κ°€λ¦¬ν‚€λŠ” λ¬Έμžμ—΄μ˜ 처음 뢀뢄을 각각 double, float, long double ν‘œν˜„μœΌλ‘œ λ³€ν™˜ν•œλ‹€.

κΈ°λŒ€ν•˜λŠ” λ¬Έμžμ—΄ (μ‹œμž‘ λΆ€λΆ„μ˜) ν˜•μ‹μ€ μ„ λ‘μ˜ 선택적인 곡백(isspace(3)둜 인식), 선택적인 μ–‘μˆ˜('+') λ˜λŠ” 음수('-') λΆ€ν˜Έ, 그리고 (i) 10μ§„μˆ˜, (ii) 16μ§„μˆ˜, (iii) λ¬΄ν•œλŒ€, (iv) NAN (not-a-number) 쀑 ν•˜λ‚˜κ°€ μ˜€λŠ” 것이닀.

10μ§„μˆ˜λŠ” μ†Œμˆ˜μ (λ‘œμΊ˜μ— 따라 λ‹€λ₯΄μ§€λ§Œ 보톡 '.')을 포함할 μˆ˜λ„ μžˆλŠ” 10μ§„μˆ˜ 숫자둜 된 λΉ„μ–΄ μžˆμ§€ μ•Šμ€ 열이며, μ„ νƒμ μœΌλ‘œ 10μ§„ μ§€μˆ˜κ°€ λ”°λΌμ˜¨λ‹€. 10μ§„ μ§€μˆ˜λŠ” 'E' λ˜λŠ” 'e'에 이어 μ„ νƒμ μœΌλ‘œ μ–‘μˆ˜ λ˜λŠ” 음수 λΆ€ν˜Έκ°€ 였고 μ΄μ–΄μ„œ 10진법 숫자둜 된 λΉ„μ–΄ μžˆμ§€ μ•Šμ€ 열이 였며, 10의 κ±°λ“­μ œκ³±μœΌλ‘œ κ³±ν•œλ‹€λŠ” λœ»μ΄λ‹€.

16μ§„μˆ˜λŠ” "0x" λ˜λŠ” "0X"에 이어 μ†Œμˆ˜μ μ„ 포함할 μˆ˜λ„ μžˆλŠ” 16μ§„μˆ˜ 숫자둜 된 λΉ„μ–΄ μžˆμ§€ μ•Šμ€ 열이 였고, μ„ νƒμ μœΌλ‘œ 2μ§„ μ§€μˆ˜κ°€ λ”°λΌμ˜¨λ‹€. 2μ§„ μ§€μˆ˜λŠ” 'P' λ˜λŠ” 'p'에 이어 μ„ νƒμ μœΌλ‘œ μ–‘μˆ˜ λ˜λŠ” 음수 λΆ€ν˜Έκ°€ 였고 μ΄μ–΄μ„œ 10진법 숫자둜 된 λΉ„μ–΄ μžˆμ§€ μ•Šμ€ 열이 였며, 2의 κ±°λ“­μ œκ³±μœΌλ‘œ κ³±ν•œλ‹€λŠ” λœ»μ΄λ‹€. μ†Œμˆ˜μ κ³Ό 2μ§„ μ§€μˆ˜ 쀑 ν•˜λ‚˜λŠ” μžˆμ–΄μ•Ό ν•œλ‹€.

λ¬΄ν•œλŒ€λŠ” "INF" λ˜λŠ” "INFINITY"이며 λŒ€μ†Œλ¬Έμž ꡬ별이 μ—†λ‹€.

NANλŠ” "NAN"(λŒ€μ†Œλ¬Έμž ꡬ별 μ—†μŒ)에 이어 μ„ νƒμ μœΌλ‘œ λ¬Έμžμ—΄ (n-char-sequence)κ°€ μ˜€λŠ” 것이닀. n-char-sequenceλŠ” κ΅¬ν˜„λ³„λ‘œ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ NAN의 μ’…λ₯˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. (NOTES μ°Έκ³ .)

RETURN VALUE

이 ν•¨μˆ˜λ“€μ€ λ³€ν™˜ν•œ 값이 있으면 κ·Έ 값을 λ°˜ν™˜ν•œλ‹€.

endptr이 NULL이 μ•„λ‹ˆλ©΄ λ³€ν™˜μ— μ“΄ λ§ˆμ§€λ§‰ 문자 λ‹€μŒ λ¬Έμžμ— λŒ€ν•œ 포인터λ₯Ό endptr이 κ°€λ¦¬ν‚€λŠ” μœ„μΉ˜μ— μ €μž₯ν•œλ‹€.

μ–΄λ–€ λ³€ν™˜λ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•˜μœΌλ©΄ 0을 λ°˜ν™˜ν•˜λ©° (endptr이 널이 μ•„λ‹ˆλ©΄) nptr의 값을 endptr이 κ°€λ¦¬ν‚€λŠ” μœ„μΉ˜μ— μ €μž₯ν•œλ‹€.

값이 μ˜€λ²„ν”Œλ‘œμš°λ₯Ό μΌμœΌν‚€κ²Œ 되면 (κ·Έ κ°’μ˜ λΆ€ν˜Έμ— 따라) μ–‘μˆ˜ λ˜λŠ” 음수 HUGE_VAL(HUGE_VALF, HUGE_VALL)을 λ°˜ν™˜ν•˜λ©° errno에 ERANGEλ₯Ό μ €μž₯ν•œλ‹€. 값이 μ–Έλ”ν”Œλ‘œμš°λ₯Ό μΌμœΌν‚€κ²Œ 되면 0을 λ°˜ν™˜ν•˜λ©° errno에 ERANGEλ₯Ό μ €μž₯ν•œλ‹€.

ERRORS

ERANGE
μ˜€λ²„ν”Œλ‘œμš°λ‚˜ μ–Έλ”ν”Œλ‘œμš°κ°€ λ°œμƒν–ˆλ‹€.

ATTRIBUTES

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

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

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C99.

strtod()λŠ” C89에도 κΈ°μˆ λ˜μ–΄ μžˆλ‹€.

NOTES

성곡과 μ‹€νŒ¨ μ–΄λŠ μͺ½μ—μ„œλ„ μ λ²•ν•˜κ²Œ 0을 λ°˜ν™˜ν•  수 μžˆμœΌλ―€λ‘œ 호좜 ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 호좜 전에 errnoλ₯Ό 0으둜 μ„€μ •ν•˜κ³ μ„œ 호좜 후에 errnoκ°€ 0 μ•„λ‹Œ 값인지 κ²€μ‚¬ν•΄μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€ 확인해야 ν•œλ‹€.

glibc κ΅¬ν˜„μ—μ„œλŠ” "NAN" 뒀에 μ„ νƒμ μœΌλ‘œ μ˜€λŠ” n-char-sequenceλ₯Ό μ •μˆ˜λ‘œ ν•΄μ„ν•˜μ—¬ (μ„ νƒμ μœΌλ‘œ μ•žμ— '0'μ΄λ‚˜ '0x'λ₯Ό λΆ™μ—¬μ„œ 8μ§„λ²•μ΄λ‚˜ 16진법 선택) λ°˜ν™˜ κ°’μ˜ κ°€μˆ˜ 뢀뢄에 μ§‘μ–΄λ„£λŠ”λ‹€.

EXAMPLE

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

SEE ALSO

atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(3)


2017-09-15

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