[C/C++] sprintf, snprintf
두비니
·2021. 3. 4. 23:03
맨날 공부해놓고 맨날 까먹어서 답답해서 쓰는 글입니다
sprintf/snprintf의 원형
우선 sprintf, 그리고 snprintf의 원형을 봅시다.
int sprintf (char *buffer, const char *format, ...)
int snprintf (char *buffer, int buf_size, const char *format, ...)
- 필요헤더: stdio.h
- 파라미터:
- *buffer : 버퍼 변수
- buf_size : 가져올 크기(snprintf만 해당)
- *format : 포멧
- 리턴값 : 문자열의 길이
대충 printf와 비슷한 느낌인데 뭐가 다르냐면 buffer 변수에 형식에 따라 만들어진 문자열이 저장된다는 점이 다릅니다.
비교를 하자면 printf는 화면에 출력하고, sprintf는 buffer에만 출력해서 buffer에 저장되는 식입니다.
sprintf/snprintf를 쓰는 이유
왜 이런 형식을 사용하냐구요? sprintf를 사용하는 이유 중 하나는 int형의 정수를 쉽게 char * , 스트링형식으로 전환할 수 있습니다. 예시를 봅시다.
#include <stdio.h>
int main(){
int a=10, b=20;
char buffer[4];
sprintf(buffer, "%d%d", a, b);
printf("%s", buffer);
return 0;
}
다음같은 코드를 실행할 경우, 1020이 출력되는 것을 볼 수 있습니다. 이런식으로 주로 쓰인다고 합니다.
to_string과 itoa등 다른 함수들도 있지만, stdio.h에 포함되어있는 표준 함수는 sprintf가 끝이라고 하네요.
참고 : www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/snprintf.htm
'Coding_Algorithm > C_C++' 카테고리의 다른 글
[C] pthread_mutex 이해하기 (0) | 2021.05.07 |
---|---|
[C언어] C언어로 수박받기 게임을 만들어보았습니다. (1) | 2020.08.17 |
[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들 (0) | 2020.05.02 |
[C++] 묵시적 복사 생성 (0) | 2019.12.05 |
[C++] 명품 C++ 프로그래밍 예제 05-11 분석 (0) | 2019.12.05 |