출처 - http://itguru.tistory.com/66
sprintf
#include <stdio.h> // C++ 에서는 <cstdio>
int sprintf ( char * str, const char * format, ... );
int sprintf ( char * str, const char * format, ... );
str 에 데이터를 형식에 맞추어 쓴다.
str 가 가리키는 배열에 형식 문자열에 지정한 방식 대로 C 문자열을 쓴다. 쉽게 설명하자면, printf 에서 화면에 출력하는 대신에 화면에 출력할 문자열을 인자로 지정한 문자열에 쓴다는 것이다. 이 때, 인자로 지정한 배열의 크기는 배열에 쓰여질 문자열의 크기 보다 커야만 한다. 주의할 점은 sprintf 함수는 자동적으로 str 맨 마지막에 NULL 문자를 붙이기 때문에 항상 한 칸의 여유가 있어야 한다.
인자 |
str
C 문자열이 저장될 char 배열을 가리키는 포인터
format
위 str 에 쓰여질 문자열을 포함하는 형식 문자열으로, 이는 형식 태그를 포함할 수 있다. 이 때, 형식 태그는 부수적 인자로 지정한 데이터와 치환되어 쓰여지게 된다. 이 때, 데이터가 치환되는 방식은 형식 태그에 의해 좌우된다. 따라서 부수적 인자의 개수는 적어도 형식 문자열에 사용된 형식 태그의 수 보다 많아야 한다.
%[플래그(flag)][폭(width)][.정밀도][크기(length)]서식 문자(specifier)
이 때 서식 문자(specifier) 는 대응하는 인자를 어떠한 형태로 표현할지를 결정하는데에 가장 중요한 역할을 한다.
서식문자 | 출력 형태 |
예 |
---|---|---|
c | 문자 |
a |
d or i | 부호 있는 십진법으로 나타난 정수 | 392 |
e | 지수 표기법(Scientific notation) 으로 출력하되, e 문자를 이용한다. |
3.9265e+2 |
E | 지수 표기법(Scientific notation) 으로 출력하되, E 문자를 이용한다. | 3.9265E+2 |
f | 십진법으로 나타낸 부동 소수점 수 |
392.65 |
g | %e 나 %f 보다 간략하게 출력 | 392.65 |
G | %E 나 %f 보다 간략하게 출력 | 392.65 |
o | 부호 있는 팔진수 |
610 |
s | 문자열 |
sample |
u | 부호없는 십진법으로 나타낸 정수 |
7235 |
x | 부호없는 16 진법으로 나타낸 정수 (소문자 사용) |
7fa |
X | 부호없는 16 진법으로 나타낸 정수 (대문자 사용) |
7FA |
p | 포인터 주소 |
B800:0000 |
n | 아무것도 출력하지 않는다. 그 대신, 인자로 부호 있는 int 형을 가리키는 포인터를 전달해야 되는데, 여기에 현재까지 쓰여진 문자 수가 저장된다. | |
% | % 다음에 %를 또 붙이면 stdout 에 % 를 출력한다. |
#include <stdio.h>
int main()
{
int integer = 123;
char character = 'c';
char string[] = "hello, world";
int* pointer = &integer;
double pi = 3.141592;
char buf[100];
sprintf(buf, "integer : (decimal) %d (octal) %o \n", integer, integer);
printf("%s \n", buf);
sprintf(buf,"character : %c \n", character);
printf("%s \n", buf);
sprintf(buf,"string : %s \n", string);
printf("%s \n", buf);
sprintf(buf,"pointer addr : %p \n", pointer);
printf("%s \n", buf);
sprintf(buf,"floating point : %e // %f \n", pi, pi);
printf("%s \n", buf);
sprintf(buf,"percent symbol : %% \n");
printf("%s \n", buf);
return 0;
}
int main()
{
int integer = 123;
char character = 'c';
char string[] = "hello, world";
int* pointer = &integer;
double pi = 3.141592;
char buf[100];
sprintf(buf, "integer : (decimal) %d (octal) %o \n", integer, integer);
printf("%s \n", buf);
sprintf(buf,"character : %c \n", character);
printf("%s \n", buf);
sprintf(buf,"string : %s \n", string);
printf("%s \n", buf);
sprintf(buf,"pointer addr : %p \n", pointer);
printf("%s \n", buf);
sprintf(buf,"floating point : %e // %f \n", pi, pi);
printf("%s \n", buf);
sprintf(buf,"percent symbol : %% \n");
printf("%s \n", buf);
return 0;
}
'IT > C&C++' 카테고리의 다른 글
[C] 랜덤 숫자, 문자 만들기 ( Randomize Statement ) (0) | 2016.05.12 |
---|---|
[C++] setcursortype(커서on/off) (0) | 2016.05.12 |
[C] strtok() 문자열을 문자로 자르기 (0) | 2016.04.15 |
[C]문자열을 정수로 변환 :: atoi() (0) | 2016.04.15 |
[C] memcmp 두개의 메모리 변수에 대한 내용 비교 (0) | 2016.04.15 |