strfromf, strfromd, strfroml
|
헤더 파일에 정의됨
<stdlib.h>
|
||
|
int
strfromf
(
char
*
restrict
s,
size_t
n,
const
char
*
restrict
format,
float
fp
)
;
|
(C23 이후) | |
|
int
strfromd
(
char
*
restrict
s,
size_t
n,
const
char
*
restrict
format,
double
fp
)
;
|
(C23 이후) | |
|
int
strfroml
(
char
*
restrict
s,
size_t
n,
const
char
*
restrict
format,
long
double
fp
)
;
|
(C23 이후) | |
부동 소수점 값을 바이트 문자열로 변환합니다.
이 함수들은
snprintf
(
s, n, format, fp
)
와 동등하지만, 형식 문자열은 반드시
%
문자, 별표
*
를 포함하지 않는 선택적 정밀도, 그리고 변환 지정자
a
,
A
,
e
,
E
,
f
,
F
,
g
, 또는
G
중 하나만을 포함해야 합니다. 이러한 변환 지정자는 함수 접미사에 의해 표시된
double
,
float
, 또는
long
double
) 타입에 적용됩니다(길이 수식자가 아닌). 다른 형식 문자열과 함께 이러한 함수들을 사용하면 정의되지 않은 동작이 발생합니다.
목차 |
매개변수
| s | - | 기록할 문자열을 가리키는 포인터 |
| n | - | 최대 n - 1개의 문자와 널 종결자(null terminator)가 기록될 수 있음 |
| format | - | 데이터 해석 방법을 지정하는 널 종결 바이트 문자열(null-terminated byte string)을 가리키는 포인터 |
| fp | - | 변환할 부동소수점 값 |
반환값
n 이 충분히 컸더라면 쓰여졌을 문자 수로, 종료 널 문자는 포함하지 않습니다. 따라서 반환된 값이 음수가 아니고 n 보다 작은 경우에만 널 종료 출력이 완전히 쓰여진 것입니다.
예제
#include <stdio.h> #include <stdlib.h> int main() { char buffer[32]; int written; const char* format[] = {"%a", "%A", "%e", "%E", "%f", "%F", "%g", "%G"}; for (size_t fmt = 0; fmt != sizeof format / sizeof format[0]; ++fmt) { written = strfromf(buffer, sizeof buffer, format[fmt], 3.1415f); printf("strfromf(... %s ...) = %2i, buffer: \"%s\"\n", format[fmt], written, buffer); } puts(""); for (size_t fmt = 0; fmt != sizeof format / sizeof format[0]; ++fmt) { written = strfromd(buffer, sizeof buffer, format[fmt], 3.1415); printf("strfromd(... %s ...) = %2i, buffer: \"%s\"\n", format[fmt], written, buffer); } puts(""); for (size_t fmt = 0; fmt != sizeof format / sizeof format[0]; ++fmt) { written = strfroml(buffer, sizeof buffer, format[fmt], 3.1415); printf("strfroml(... %s ...) = %2i, buffer: \"%s\"\n", format[fmt], written, buffer); } }
출력:
strfromf(... %a ...) = 13, buffer: "0x1.921cacp+1" strfromf(... %A ...) = 13, buffer: "0X1.921CACP+1" strfromf(... %e ...) = 12, buffer: "3.141500e+00" strfromf(... %E ...) = 12, buffer: "3.141500E+00" strfromf(... %f ...) = 8, buffer: "3.141500" strfromf(... %F ...) = 8, buffer: "3.141500" strfromf(... %g ...) = 6, buffer: "3.1415" strfromf(... %G ...) = 6, buffer: "3.1415" strfromd(... %a ...) = 20, buffer: "0x1.921cac083126fp+1" strfromd(... %A ...) = 20, buffer: "0X1.921CAC083126FP+1" strfromd(... %e ...) = 12, buffer: "3.141500e+00" strfromd(... %E ...) = 12, buffer: "3.141500E+00" strfromd(... %f ...) = 8, buffer: "3.141500" strfromd(... %F ...) = 8, buffer: "3.141500" strfromd(... %g ...) = 6, buffer: "3.1415" strfromd(... %G ...) = 6, buffer: "3.1415" strfroml(... %a ...) = 20, buffer: "0xc.90e5604189378p-2" strfroml(... %A ...) = 20, buffer: "0XC.90E5604189378P-2" strfroml(... %e ...) = 12, buffer: "3.141500e+00" strfroml(... %E ...) = 12, buffer: "3.141500E+00" strfroml(... %f ...) = 8, buffer: "3.141500" strfroml(... %F ...) = 8, buffer: "3.141500" strfroml(... %g ...) = 6, buffer: "3.1415" strfroml(... %G ...) = 6, buffer: "3.1415"
참조
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.24.1.3 strfromd, strfromf, strfroml 함수
참고 항목
|
(C99)
(C11)
(C11)
(C11)
(C11)
|
표준 출력, 파일 스트림 또는 버퍼에 서식이 지정된 출력을 인쇄합니다
(함수) |
|
(C99)
(C99)
|
바이트 문자열을 부동 소수점 값으로 변환합니다
(함수) |